Actionscript 3 as3变量名和实例名之间有什么区别?

Actionscript 3 as3变量名和实例名之间有什么区别?,actionscript-3,oop,instance,Actionscript 3,Oop,Instance,在我的类中使用“this”关键字时,我偶然发现: 我有一个MovieClip课程,它被添加到了舞台上。从它的实例内部,似乎知道我在属性中为它指定的名称(第1章) 然后(第1章)将另一个类的实例(Transition)创建为变量(transition1): 然后我调用transition1的内部方法,如下所示: transition1.moveFromTo(this); trace(this.name); 其名称如下所示: transition1.moveFromTo(this); trac

在我的类中使用“this”关键字时,我偶然发现:

我有一个MovieClip课程,它被添加到了舞台上。从它的实例内部,似乎知道我在属性中为它指定的名称(第1章)

然后(第1章)将另一个类的实例(Transition)创建为变量(transition1):

然后我调用transition1的内部方法,如下所示:

transition1.moveFromTo(this);
trace(this.name);
其名称如下所示:

transition1.moveFromTo(this);
trace(this.name);
在追踪第1章的名字时,我得到了“第1章”作为它的名字。但在transition1内部,我通过同样的方式获得“instance1”。 我已经知道我可以通过“transition1.name=transition1”来分配名称。这表明通过.name属性获得的变量名和实例名不同


但是我不明白为什么我必须创建一个变量来引用实例。

实例名称是引用movieclip的一种方式。
变量是访问函数的方式,适用于该movieclip的变量

var currentTile:MovieClip = this.getChildByName("MyClip") as MovieClip;
currentTile.someFunction();
从这里你可以操纵电影剪辑。 如果创建了chapter1类专用的变量,则不必命名movieclip,因为变量的作用域将覆盖类中的所有代码

当你在设计阶段添加一个movieclip时,在我看来flash分配了一个名为“instancex”的变量,并将其命名为“instancex”。当您命名它时,它会更改名称。
如果变量在您的代码范围内,或者您不必在以后的阶段引用它,那么也不需要命名movieclip。
另一种看待它的方式。“变量”是包含属性和函数的对象。“实例名称”是对象的属性。
希望有帮助。

DisplayObject
的一个属性

当您通过Flash IDE在MovieClip属性中填写“实例名称”字段时,实际发生的是为该MovieClip指定一个
name
值。此外,还创建了一个变量,供您使用相同的名称。这本质上是一条捷径,这样你就不必为舞台上所有的电影口吻做这样的事情:

var myclip:MovieClip = getChildByName("myclip");
如果未为DisplayObject指定名称,则会自动为其指定名称,类似于
instance3
。请尝试以下代码,例如:

var mc:MovieClip = new MovieClip();
trace(mc.name); // instance1
在这些情况下,没有创建供您使用的变量,您必须自己创建对它的引用