设置动态变量名称在ActionScript 3.0中

时间:2009-10-11 22:44:52

标签: flash actionscript-3 variables

我需要为每次迭代设置自定义变量名称。为什么这不可能?

for (var i:uint = 0; i < 50; i++)
{
   var ['name' +i] = new Sprite();
}
*//1840: Syntax error: expecting identifier before left bracket*

3 个答案:

答案 0 :(得分:9)

您想使用哈希映射来执行此操作。

var map:Object = {};
for (var i:uint = 0; i < 50; i++)
{
   map['name' +i] = new Sprite();
}

否则你会混淆编译器。不允许使用局部变量的动态名称。

答案 1 :(得分:3)

根据你正在做的事情,有一种解决方法。如果这些剪辑都已添加到舞台,那么您可以使用getChildByName方法来访问它们。您的设置看起来像这样:

var clips:Array = [];

for (var i:int = 0; i < 100; i++) {
    clips[i] = new MovieClip();
    clips[i].name = "clip" + i;
    addChild(clips[i]);
}

trace (getChildByName("clip2")); // traces [object MovieClip]

这是通过查询显示API来完成的,因此你不能在任何未添加到显示列表的地方使用getChildByName。

希望有所帮助!

答案 2 :(得分:0)

虽然不建议使用动态类比密封类慢,但您当然可以使类动态化,然后使用此[“varname”]来设置变量。即使在扩展动态类(如Movieclip)时,您也需要将类指定为动态类(子类不继承此类)。

dynamic public class MyClass{
....
....
....
for (var i:uint = 0; i < 50; i++)
{
   this['name' +i] = new Sprite();
}