我正在尝试使用ActionScript 3在闪存中制作一个纸牌游戏。我不太熟悉这种语言(与AS2一起长大),但我认为它更适合这个项目。
然而,糟糕的是,我马上遇到了一个问题:我把每一张牌都当作电影剪辑,但我真正需要的是给卡分配一些整数值(这并不是真正的情况,但作为一个例子,让我在扑克上工作,我希望所有的王牌都带有值1,因为它们是最好的牌,2代表国王,等等)。
我试着寻找它,但我找到的都是如何制作电影短片阵列。我知道这个问题应该不会太难!有人能帮帮我吗?
(顺便说一句,我是否真的应该使用电影剪辑,或者按钮是否会更方便?)
发布于 2013-01-03 14:49:30
首先,从我的角度来看,除非你真的需要,否则永远不要使用组件,因为它们需要更长的时间来绘制,而且它们不灵活。我在过去遇到过很多问题(我发布的this question就是其中之一)。
关于MovieClip的…MovieClip类是动态,因此您可以为其分配任何虚拟属性,这是没有问题的。所以yourMcInstance.someVar = 3
是完全有效的。
我认为AS3的主要变化之一是引入了Sprite类,它基本上是一个没有时间线的MovieClip。它要轻得多,除非您手动创建帧动画,否则它是任何可以处理鼠标(和许多其他)事件的容器的首选类。但是,它不是一个动态类,所以yourSpriteInstance.someVar = 3
是无效的。这就是为什么鼓励使用定制类的原因。对于自定义类,您可以选择扩展类并创建自定义属性和方法。
发布于 2013-01-03 14:49:30
因为影片剪辑是对象,所以您实际上可以将变量直接附加到它们。
var card:MovieClip = new MovieClip(); //create a blank MC
addchild(card);
card.id = 5; //You can attach vars like this
发布于 2013-01-03 15:01:01
要将MovieClips添加到阵列,请执行以下操作:
const clips:Array = [];
function addNewCardToCardsArray(array:Array, color:String, value:int):MovieClip {
const clip:MovieClip = new MovieClip();
clip.color = color;
clip.value = value;
return array[array.length] = clip;
}
https://stackoverflow.com/questions/14140440
复制