【发布时间】:2011-09-16 08:13:48
【问题描述】:
我正在尝试将字符串转换为实例名称。
stage.focus = ["box_"+[i+1]];
这让我回来了 = box_2;
但我需要它是一个对象而不是字符串。
在 as2 中我可以使用 eval。在 as3 中怎么做?
【问题讨论】:
标签: arrays actionscript-3 object string
我正在尝试将字符串转换为实例名称。
stage.focus = ["box_"+[i+1]];
这让我回来了 = box_2;
但我需要它是一个对象而不是字符串。
在 as2 中我可以使用 eval。在 as3 中怎么做?
【问题讨论】:
标签: arrays actionscript-3 object string
如果您想访问当前班级的成员,已经给出的答案将起作用。但是,如果您正在查找的实例不是该类的一部分,那么您就不走运了。
例如:
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";
不过,我还是推荐一个数组。
【讨论】:
例如,如果你想在你的主类中调用函数“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]
【讨论】:
正确的语法是:
this["box_"+(i+1)]
【讨论】:
.,并删除了我的答案。