有没有更好的方法来使用没有 eval 的字符串来获取对动作脚本中影片剪辑的引用

Posted

技术标签:

【中文标题】有没有更好的方法来使用没有 eval 的字符串来获取对动作脚本中影片剪辑的引用【英文标题】:Is there a better way to get hold of a reference to a movie clip in actionscript using a string without eval 【发布时间】:2010-09-12 13:05:01 【问题描述】:

我创建了一堆名称相似的电影剪辑,然后在其他一些事件之后,我建立了一个字符串,例如:

var clipName = "barLeft42"

它保存在另一个名为“事物”的影片剪辑中。

我已经能够使用以下方法获得参考:

var movieClip = Eval( "_root.thing." + clipName )

但这感觉很糟糕 - 有没有更好的方法?

【问题讨论】:

【参考方案1】:

电影剪辑是 actionscript 中的集合(与大多数类似并且类似于 javascript,所有内容基本上都是键值对)。您可以使用方括号和键名的字符串来索引集合,例如:

_root.thing[ "barLeft42" ]

这应该对你有用...

【讨论】:

【参考方案2】:

避免使用已弃用的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 ];

【讨论】:

【参考方案3】:

您可以使用括号并在其中包含变量...因此,如果您想遍历它们,您可以这样做:

for (var i=0; i<99; i++) 
  var clipName = _root.thing["barLeft"+i];

【讨论】:

以上是关于有没有更好的方法来使用没有 eval 的字符串来获取对动作脚本中影片剪辑的引用的主要内容,如果未能解决你的问题,请参考以下文章

有没有更好的方法来使用 Youtube PHP API

有没有更好的方法来使用 PowerShell 实现服务的开/关

有没有更好的方法来使用存储库在 Laravel 中分配 Eloquent 关系?

有没有更好更快的方法来使用推力从 CPU 内存复制到 GPU?

有没有更好(更干净)的方法来使用三元运算符(不重复代码)编写这个 JS 代码?

有没有更惯用的方法来使用 Casbah 检查密码?