是否有更好的方法使用不带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];
}