动态访问flash actionscript 2中的嵌套影片剪辑

时间:2009-02-11 18:28:20

标签: flash dynamic variables actionscript-2 movieclip

我有一个我想要访问的嵌套影片剪辑实例。影片剪辑的路径由两个变量(类似于行和列)定义。

我已经动态访问父级影片剪辑,如下所示:

eval(“row”+ ActiveRow)

现在我想要访问一个行(#)的子项名为let(#)的动态。

以下是我完成任务的最佳猜测(两者均无效):

var i:number;

eval(“row”+ ActiveRow +“。try”+ i) 要么 eval(“row”+ ActiveRow).eval(“let”+ i)

非常感谢您的努力和可能的解决方案..

3 个答案:

答案 0 :(得分:8)

你可以尝试

this["row" + ActiveRow]["let" + i]

更好的是,如果你在创建实例时将它们放在一个数组中......那么也许

var rowClips : Array = [];

for (var i : int = 0; i < 10; i++)
{
     var row : MovieClip = this.createEmptyMovieClip("row" + i, i);

     rowClips.push(row);
}

然后你可以通过

来调用它
rowClips[i];

显然,根据情况,将MovieClip添加到数组可能有不同的逻辑,但实际上它是一种更好的方式来存储对MovieClip的引用。

答案 1 :(得分:1)

访问父级影片剪辑后,只需索引该子级即可。 ActionScript 2不要求您使用eval函数来查找动态属性。只需使用对象和[](数组)运算符来索引所需的变量。

如果您的“行”对象位于当前影片剪辑的根目录中,则只需使用_root[ "row" + ActiveRow ][ "let" + i ]

但是,由于您已经通过eval("row"+ActiveRow)获得了初始动画片段,因此您可以使用此对象来降低下一级别。例如,eval("row" + ActiveRow)[ "let" + i ]

Flash大量借用JavaScript,就像JavaScript一样,每个对象本质上都是一个哈希表。使用点运算符相当于使用带有固定字符串的[](数组)运算符。

答案 2 :(得分:0)

首先,看起来你正在使用表格数据结构,因此一种简单的方法是创建一个二维数组,然后将影片剪辑存储在那里。然后你可以通过索引进行查找。

或者,您可以为每个影片剪辑命名(使用name属性),并使用getChildByName。

I.E getChildByName(“row”+ i).getChildByName(“column”+ i)。