将String转换为对象实例名称

时间:2011-06-16 12:32:17

标签: arrays actionscript-3 object string

我试图将字符串转换为实例名称。

stage.focus = ["box_"+[i+1]];

这让我退回= box_2;

但我需要它是一个对象而不是一个字符串。

在as2中,我可以使用eval。我如何在as3中完成?

3 个答案:

答案 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";

但是,我再推荐一个阵列。