在我的课程中使用“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属性获得的变量名称和实例名称不同。
但我不明白为什么然后我必须创建一个变量来引用该实例。
答案 0 :(得分:0)
实例名称是一种引用动画片段的方式 变量是访问函数的方法,适用于该动画片段的变量。
var currentTile:MovieClip = this.getChildByName("MyClip") as MovieClip;
currentTile.someFunction();
从这里你可以操纵动画片段。 如果您创建了一个私有的chapter1类变量,则不必为movieclip命名,因为变量的范围将覆盖类中的所有代码。
当你在设计时将一个动画片段添加到舞台上时,在我看来flash会分配一个名为' instancex'的变量。并命名为' instancex'。命名时,它会更改名称
如果变量在您的代码范围内,或者您不必在以后的某个阶段引用它,也无需为movieclip命名。
另一种看待它的方式。 '变量'是包含属性,函数的对象。 '实例名称'是对象的属性。
我希望它有所帮助。
答案 1 :(得分:0)
name
是DisplayObject
的属性。
当您通过Flash IDE填写MovieClip属性中的“实例名称”字段时,实际发生的是您为该MovieClip赋予name
的值。此外,还为您创建了一个使用相同名称的变量。它本质上是一个快捷方式,因此你不必为舞台上的所有MovieClip做这样的事情:
var myclip:MovieClip = getChildByName("myclip");
如果没有为DisplayObject指定名称,则会自动为其指定名称,类似instance3
。请尝试以下代码:
var mc:MovieClip = new MovieClip();
trace(mc.name); // instance1
在这些情况下,没有为您创建变量,您必须自己创建对它的引用。