是否有更好的方法使用不带eval的字符串来获取对动作脚本中的影片剪辑的引用
时间:2020-03-06 14:37:42 来源:igfitidea点击:
我创建了一堆电影剪辑,它们都具有相似的名称,然后在发生其他事件后,我建立了一个字符串,如:
var clipName = "barLeft42"
它被保存在另一个名为"事物"的电影剪辑中。
我已经能够使用以下方法获取参考:
var movieClip = Eval( "_root.thing." + clipName )
但这感觉不好,有没有更好的方法?
解决方案
电影剪辑是动作脚本中的集合(与大多数脚本类似,与javascript类似,基本上所有内容都是键值对)。我们可以使用方括号和键名称的字符串来索引集合,例如:
_root.thing[ "barLeft42" ]
那应该为我们解决问题...
避免使用不建议使用的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]; }