我创建了一堆电影剪辑,它们都具有相似的名称,然后在其他一些事件之后,我建立了一个字符串,例如:
var clipName = "barLeft42"
它被保存在另一个名为“事物”的电影剪辑中。
我已经能够使用以下方法获得参考:
var movieClip = Eval( "_root.thing." + clipName )
但这感觉很糟糕——有更好的方法吗?
我创建了一堆电影剪辑,它们都具有相似的名称,然后在其他一些事件之后,我建立了一个字符串,例如:
var clipName = "barLeft42"
它被保存在另一个名为“事物”的电影剪辑中。
我已经能够使用以下方法获得参考:
var movieClip = Eval( "_root.thing." + clipName )
但这感觉很糟糕——有更好的方法吗?
电影剪辑是 actionscript 中的集合(与大多数类似并且类似于 javascript,所有内容基本上都是键值对)。您可以使用方括号和键名的字符串对集合进行索引,例如:
_root.thing[ "barLeft42" ]
那应该对你有用...
避免使用 deprecated 的更好方法eval
是使用方括号进行索引:
var movieClip = _root.thing[ "barLeft42" ]
但最好的方法是保留对您制作的剪辑的引用,并通过引用而不是名称来访问它们:
var movieClipArray = new Array();
for (var i=0; i<45; i++) {
var mc = _root.thing.createEmptyMovieClip( "barLeft"+i, i );
// ...
movieClipArray.push( mc );
}
// ...
var movieClip = movieClipArray[ 42 ];
您可以使用括号并在其中包含变量...因此,如果您想遍历它们,您可以这样做:
for (var i=0; i<99; i++) {
var clipName = _root.thing["barLeft"+i];
}