我有一个要访问的嵌套影片剪辑实例。影片剪辑的路径由两个变量定义(类似于行和列)。
我已经像这样动态访问父影片剪辑:
评估(“行”+ ActiveRow)
现在我想动态访问名为 let(#) 的 row(#) 的子节点之一。
以下是我完成任务的最佳猜测(两者都不起作用):
变量我:数字;
eval("row" + ActiveRow + ".let" + i) 或 eval("row" + ActiveRow).eval("let" + i)
非常感谢您的努力和可能的解决方案..
我有一个要访问的嵌套影片剪辑实例。影片剪辑的路径由两个变量定义(类似于行和列)。
我已经像这样动态访问父影片剪辑:
评估(“行”+ ActiveRow)
现在我想动态访问名为 let(#) 的 row(#) 的子节点之一。
以下是我完成任务的最佳猜测(两者都不起作用):
变量我:数字;
eval("row" + ActiveRow + ".let" + i) 或 eval("row" + ActiveRow).eval("let" + i)
非常感谢您的努力和可能的解决方案..
你可以试试
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];
显然,视情况而定,将您的 MovieClips 添加到数组中可能会有不同的逻辑,但本质上这是一种更好的方式来存储对您的 MovieClips 的引用。
访问父影片剪辑后,只需对子影片进行索引。ActionScript 2 不要求您使用该eval
函数来查找动态属性。只需使用对象和[]
(数组)运算符来索引所需的变量。
如果您的“行”对象位于当前影片剪辑的根目录中,您可以简单地使用_root[ "row" + ActiveRow ][ "let" + i ]
.
但是,由于您已经通过 获得了初始影片剪辑eval("row"+ActiveRow)
,因此您可以使用此对象来获得下一个级别。例如,eval("row" + ActiveRow)[ "let" + i ]
。
Flash 大量借鉴了 JavaScript,并且和 JavaScript 一样,每个对象本质上都是一个哈希表。使用点运算符等同于使用带有固定字符串的 [](数组)运算符。
首先,您似乎使用的是表格数据结构,因此一种简单的方法是创建一个二维数组并将影片剪辑存储在其中。然后您可以按索引进行查找。
或者,您可以为每个影片剪辑命名(使用 name 属性),并使用 getChildByName。
即 getChildByName("row"+i).getChildByName("column"+i)。