将字符串转换为对象实例名称
问题描述:
我试图将字符串转换为实例名称。将字符串转换为对象实例名称
stage.focus = ["box_"+[i+1]];
这给了我回= box_2
;
但我需要它是一个对象而不是字符串。
在as2中,我可以使用eval。我如何在as3中执行此操作?
答
正确的语法是:
this["box_"+(i+1)]
答
例如,如果你想调用的函数“开始”,在您的主类,你会做这种方式:
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]
答
如果要访问当前类的成员,已经给出的答案会工作。但是,如果你正在寻找的实例不是班级的一部分,那么你运气不好。
例如:
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";
但是,我再次推荐一个数组。
+1在我的回答中,我在这之后加了'.',并删除了我的答案。 – 2011-06-16 12:43:01
谢谢,丹妮!如果事实是正确的语法! \t \t \t \t \t \t stage.focus = this [“box _”+(i + 1)]; – Mario 2011-06-16 14:34:09