我试图将字符串转换为实例名称。
stage.focus = ["box_"+[i+1]];
这让我退回= box_2
;
但我需要它是一个对象而不是一个字符串。
在as2中,我可以使用eval。我如何在as3中完成?
答案 0 :(得分:9)
正确的语法是:
this["box_"+(i+1)]
答案 1 :(得分:2)
例如,如果您想在主课程中调用“start”函数,您可以这样做:
this["start"]();
变量也是如此。由于所有类都是Object的子类,因此您可以像使用普通对象一样检索它们的变量。像这样的一个类:
package{
import flash.display.Sprite;
public class Main extends Sprite{
public var button:Sprite;
public function Main(){
trace(this["button"]);
}
}
}
输出:
[object Sprite]
答案 2 :(得分:0)
如果您想访问当前班级的成员,已经给出的答案将有效。但是,如果你正在寻找的实例不是课程的一部分,那你就不走运了。
例如:
private function foo():void {
var box_2:Sprite;
trace(this["box_"+(i+1)]);
}
无法使用,因为box_2不是该类的一部分。在这种情况下,强烈建议使用数组。
如果要访问DisplayObject(例如,Sprite或MovieClip),您还可以使用getChildByName。但在这种情况下,box_2
将是对象的名称,而不是变量的名称。您将名称设置为
var box:Sprite;
box.name = "box_2";
但是,我再推荐一个阵列。