3

背景:

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

问题:

我试图扭转这一点,到目前为止我发现的唯一方法是这样的方法:

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

问题是我必须做出大约 20 个案例陈述才能完成这项工作,这似乎是不必要的 =( 无论如何你可以从字符串中引用一个 MovieClip 吗?

4

2 回答 2

2

我认为您正在寻找的是:
getChildByName()

于 2012-09-03T22:54:23.727 回答
0

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

import flash.display.MovieClip;

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

trace(this["myObject"]);

// Output: [object MovieClip]

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

于 2012-09-04T07:05:30.070 回答