如何通过字符串来处理对象?

时间:2012-09-03 22:08:13

标签: actionscript-3

背景:

在AS3的共享对象中,我保存了在游戏中出现在舞台时间的某些MovieClip的名称(作为字符串)。

问题:

我试图扭转这一局面,到目前为止我找到的唯一方法是这样的方法:

function objectNameFromString(objectNameAsString): MovieClip {
    switch (objectNameAsString): {
    case "myobject":
        return myobject;
        break;
    }
}

问题是我必须制作20个大小写的语句才能完成这个看似不必要的事情=(无论如何你只能从字符串中引用一个MovieClip?

2 个答案:

答案 0 :(得分:2)

我认为你正在寻找的是这样的:
getChildByName()

答案 1 :(得分:0)

这不是一种很好的编码方式,因为它绕过了类型安全,但是任何对象的属性,包括你的时间轴,都被存储为数组,所以如果你的属性和你的函数都在同一范围内(即变量在主时间轴上,无论您的MovieClip在显示层中的位置如何),您应该只能使用this["myObject"];

import flash.display.MovieClip;

var myObject:MovieClip = addChild(new MovieClip()) as MovieClip;

trace(this["myObject"]);

// Output: [object MovieClip]

但正如其他人所建议的那样,建立一个正式的集合可能是一种更好的方法,或者如果你的所有对象共享一个共同的父对象(例如,如果它们都直接放在舞台上),则使用getChildByName()