背景:
在AS3的共享对象中,我保存了在游戏中出现在舞台时间的某些MovieClip的名称(作为字符串)。
问题:
我试图扭转这一局面,到目前为止我找到的唯一方法是这样的方法:
function objectNameFromString(objectNameAsString): MovieClip {
switch (objectNameAsString): {
case "myobject":
return myobject;
break;
}
}
问题是我必须制作20个大小写的语句才能完成这个看似不必要的事情=(无论如何你只能从字符串中引用一个MovieClip?
答案 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()
。