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

时间:2013-07-21 11:07:47

标签: actionscript-3 oop instance

在我的课程中使用“this”关键字时,我偶然发现了这一点:

我有一个添加到舞台的MovieClip类。从它的实例里面似乎知道我在属性中分配给它的名字(第1章)。

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

var transition1:Transition = new Transition();

然后我称之为transition1的内部方法,如下所示:

transition1.moveFromTo(this);

正在跟踪它的名字:

trace(this.name);

在追踪chapter1的名称时,我得到“chapter1”作为其名称。但在transition1内部,我以同样的方式得到“instance1”。 我已经发现我可以通过“transition1.name = transition1”分配名称。这表明我通过.name属性获得的变量名称和实例名称不同。

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

2 个答案:

答案 0 :(得分:0)

实例名称是一种引用动画片段的方式 变量是访问函数的方法,适用于该动画片段的变量。

var currentTile:MovieClip = this.getChildByName("MyClip") as MovieClip;
currentTile.someFunction();

从这里你可以操纵动画片段。 如果您创建了一个私有的chapter1类变量,则不必为movieclip命名,因为变量的范围将覆盖类中的所有代码。

当你在设计时将一个动画片段添加到舞台上时,在我看来flash会分配一个名为' instancex'的变量。并命名为' instancex'。命名时,它会更改名称 如果变量在您的代码范围内,或者您不必在以后的某个阶段引用它,也无需为movieclip命名。 另一种看待它的方式。 '变量'是包含属性,函数的对象。 '实例名称'是对象的属性。
我希望它有所帮助。

答案 1 :(得分:0)

nameDisplayObject的属性。

当您通过Flash IDE填写MovieClip属性中的“实例名称”字段时,实际发生的是您为该MovieClip赋予name的值。此外,还为您创建了一个使用相同名称的变量。它本质上是一个快捷方式,因此你不必为舞台上的所有MovieClip做这样的事情:

var myclip:MovieClip = getChildByName("myclip");

如果没有为DisplayObject指定名称,则会自动为其指定名称,类似instance3。请尝试以下代码:

var mc:MovieClip = new MovieClip();
trace(mc.name); // instance1

在这些情况下,没有为您创建变量,您必须自己创建对它的引用。