0

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

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

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

var transition1:Transition = new Transition();

然后我像这样调用transition1的内部方法:

transition1.moveFromTo(this);

这是这样追踪它的名字的:

trace(this.name);

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

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

4

2 回答 2

0

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

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

从这里您可以操作影片剪辑。如果您创建了一个为 chapter1 类私有的变量,则不必命名该影片剪辑,因为该变量的范围将涵盖该类中的所有代码。

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

于 2013-07-21T21:47:35.303 回答
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

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

于 2013-07-21T23:03:15.600 回答