我需要为每次迭代设置自定义变量名称。为什么这不可能?
for (var i:uint = 0; i < 50; i++)
{
var ['name' +i] = new Sprite();
}
*//1840: Syntax error: expecting identifier before left bracket*
答案 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();
}