AS3类实例名称
我真的好奇。我制作了一个MovieClip类Apple,我编写了一个函数,用名称“apple”创建一个新实例。每次将新实例推入Array“Apple”时。我调用函数5次,我得到5个苹果。我可以通过调用它们来处理它们,例如苹果[0]。当我追踪我的数组时,我会看到5 [对象Apple]的东西。所以也许我不太了解AS3对象的结构,但是不应该每个对象都有一个名字吗?AS3类实例名称
当我设置apple.name并用5个不同的名称获得的阵列,我无法通过像apple1.x = 10名称操纵对象。 计算机如何知道哪个苹果在哪里,如果每个都有自己的坐标?是唯一称呼他们的方式:苹果[0] - 苹果[4]?如果我为所有苹果创建一个应该相同的代码,那么我应该如何解决该功能,以“this”?原因当我写班代码我还没有任何名字......
例如,如果我想让苹果类可以拖动图片(MovieClip),创建任意数量的苹果,最多一百万,我不可能将苹果[0] .addEventListener,苹果[1] .addEventListener ...苹果[1000000] .addEventListener添加到代码中。 如何使其成为全球?
我问的原因,当我直接编码一个特定的实例,它有一个名称,我确切地知道我在处理什么。和一个班级一起工作,制作很多东西我有点不...对不起,我很绿色
您不需要名称就能够访问和操作您的实例。
你可以做这样的事情:
var apples:Array = new Array();
for (var i:int = 0; i < 100; i++)
{
var apple:Apple = new Apple();
apples.push(apple);
apple.x = Math.random() * 500;
apple.y = Math.random() * 500;
addChild(apple);
apple.addEventListener(MouseEvent.CLICK, onAppleClick);
}
function onAppleClick(e:MouseEvent):void
{
var ind:int = apples.indexOf(e.currentTarget);
var apple:Apple = apples[ind];
trace(ind);
apples[ind].visible = false;
//or
//apple.visible = false;
}
同样的问题,呵呵? :)
例如Apple extends Sprite
并继承财产name
。
这是公开的,这意味着你可以改变它的名字。
var apple:Apple = new Apple() ;
apple.name = "MegaApple" ;
此外,如果您将苹果添加到舞台上,您可以通过名称获取他。
stage.addChild(apple) ;
获得苹果回来:
var oldApple:Apple = stage.getChildByName("MegaApple") ;
但是,这绝不意味着,你可以使用苹果这样的: MegaApple.move()
- 因为苹果的名称应该是苹果的一个属性,而不是一个名字的变量。
当然,你也可以手动创建许多苹果:
var apple1 = new Apple() ;
var apple2 = new Apple() ;
var apple3 = new Apple() ;
但是,如果他们所有的行为方式相同,有做没有意义的。这就是为什么你将它们存储到数组中。
希望你明白我的意思。
呵呵,不好意思,你走了,我仍然有问题^ _ ^” – SherWood 2013-02-19 19:54:47
萘乙酸,它的优良:) – vikingmaster 2013-02-19 19:55:22
我觉得这是一个很好的例子,让OP滚动。所有DisplayObject实例的“名称”属性@SherWood与编译前脚本中的变量名称不同。在您的示例中,将对象存储在数组中,AS3知道对象的位置并通过数组维护对它们的引用。说数组在地址0,每个对象是20字节,对象1在0,对象2然后在地址20,对象3在地址40(通常这种事情与C讨论,但理论仍然适用于AS3) 。这里显示了获取变种的方法。 – shaunhusain 2013-02-19 13:56:41
还有一点要注意的是,如果你在类中编写了一个方法(比如说你在Apple类中编写了一个方法),那么“this”意味着当前的实例,所以不会在实例的“外部”编写一堆代码在它们上面,你可以将该代码封装到类定义中的方法中。 – shaunhusain 2013-02-19 13:58:07
非常好,简单,谢谢一堆!我会尽力告诉你它是否有效。此外,这是一种从群中获得特定苹果的方法吗?如果我想单击其中的一个,而不是可见的应用marryMe函数,并更改ringPutOn = true,并将颜色更改为粉红色,并停止执行其他苹果所做的操作,这将会很特别,是不是很好? (什么是perv XD)它不会改变整个班级?或者你更愿意建立一个新的班级,代表一个妻子 - 苹果,并改变点击一个新的班级? – SherWood 2013-02-19 20:01:18