Set Dynamic Variable name In ActionScript 3.0

Deadly 提交于 2019-12-21 13:41:12

问题


I need to set custom variable name for every iteration. Why this isn't possible?

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

回答1:


You want to use a hash map to do this.

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

Otherwise you're confusing the compiler. Dynamic names for local variables aren't allowed.




回答2:


There is sort of a way around this, depending on what you're doing. If these clips are all added to stage then you can use the getChildByName method to access them. Your setup would look something like this:

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]

This is done by querying the display API, though, so you can't use getChildByName on anything that's not added to a display list somewhere.

Hope that helps!




回答3:


Though not recommended as dynamic classes are slower than sealed classes, you can certainly make the class dynamic and then use this["varname"] to set the variable. You need to specify a class as dynamic even when extending a dynamic class like Movieclip (sub classes don't inherit this).

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


来源:https://stackoverflow.com/questions/1551998/set-dynamic-variable-name-in-actionscript-3-0

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!