2009-02-11 101 views
2

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

我已经动态访问这样的父影片剪辑:

的eval(“行” + ActiveRow)

现在我要访问的行中的一个(#)的孩子叫设(# )动态。

以下是在完成任务我最好的猜测(没有一个工程):

变种我:数;

的eval( “行” + ActiveRow + “让” + I) 或 的eval( “行” + ActiveRow).eval( “让” +我)

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

回答

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]; 

显然,根据情况把它可能有不同的逻辑来增加你的影片剪辑到一个数组,但基本上就是以引用存储到您的影片剪辑,一个好得多的办法。

+0

我将为剪辑使用一个数组。 – Bryan 2009-02-12 21:54:35

1

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

如果你的“行”的对象是在当前影片剪辑的根,你可以简单地使用_root[ "row" + ActiveRow ][ "let" + i ]

不过,既然你已经通过eval("row"+ActiveRow)拥有初始影片剪辑,您可以使用这个对象来获得一个新的水平下降。例如,eval("row" + ActiveRow)[ "let" + i ]

Flash的JavaScript的大量借鉴,而像JavaScript,每个对象基本上是一个哈希表。使用点运算符等同于使用固定字符串的[](数组)运算符。

+0

感谢您的解释。散列表是有意义的。 – Bryan 2009-02-12 21:54:00

0

首先,好像你正在使用的表格数据结构,所以一个简单的方法是创建一个二维数组和只储存影片剪辑在那里。然后你可以通过索引来查找。

另外,你的名字每个影片剪辑(使用name属性),并使用getChildByName。

即getChildByName( “行” + I).getChildByName( “列” + i)中。