2009-08-30 59 views
0

的想法是访问MC的与sequ​​antial实例名称, 例如阶段:MC1,MC2,...闪光 - AS3并行埃维尔在AS2

现在,在AS2我会做:这[“mc”+ i] (其中“i”表示1-3之间的数字)

我将如何在as3中执行此类操作?

在此先感谢

+0

示例代码甚至不使用 “EVAL”。你可以在AS3中运行它而不需要改变任何东西。 – fenomas 2009-09-01 06:54:08

回答

1

如果MC1,MC2,位于您的FLA的最顶层,并且没有其他剪辑波纹管他们(例如MC1有了深度(指数)1,MC2具有指数2等) 你可以使用getChildAt();

for(var i:int = 1 ; i < 3 ; i++){ 
var clip:MovieClip = MovieClip(getChildAt(i)); 
} 

,如果你不知道的深度管理,仅举短片(如果他们在舞台上,给他们实例名称,如果他们在运行时创建,使用name属性(mc1.name = 'MC1'))

,并使用getChildByName(),让他们

for(var i:int = 1 ; i < 3 ; i++){ 
var clip:MovieClip = MovieClip(getChildByName('mc'+i)); 
trace(' got clip named: ' + clip.name); 
} 

我敢肯定有很多resouces如果你只是谷歌AS2 AS3迁移

1

这个[ “MC” + 1]的作品为了我。

我做了一个名为MC1,MC2和MC3 3个影片剪辑,并将它们放置在x = 100,200,和300

for (var i:int = 1; i <= 3; ++i) { 
    var mymc:MovieClip = this["mc" + i]; 
    trace(mymc + ".x = " + mymc.x) 
} 

打印出

[object MovieClip].x = 100 
[object MovieClip].x = 200 
[object MovieClip].x = 300 
0

this["mc" + i]将工作,如果mc1this对象所属的类的实例变量。可以使用方括号语法来代替AS3中的点语法(尽管不建议这样做,因为它会将编译器错误转化为运行时错误)。

下面的语句是等价的:

this.mc1.width = 100; 
this["mc1"].width = 100;