有没有更好的方法来使用没有eval的字符串来控制actionscript中的影片剪辑的引用

StackOverflow https://stackoverflow.com/questions/123979

  •  02-07-2019
  •  | 
  •  

我创建了一堆影片剪辑,它们都有相似的名字,然后在其他一些事件之后,我建立了一个字符串,如:

var clipName = "barLeft42"

位于另一个名为“thing”的影片剪辑中。

我已经能够使用以下方法获取参考资料:

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];
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top