我正在尝试使用 .SWC 库(从 .FLA 文档导出)来存储游戏的图形数据。在我的一个类中,我试图附加请求级别的 MovieClip 的一个实例,但我正在尝试使用 getDefinitionByName() 以便我可以根据级别编号拉入正确的类。我在 Flash Builder 4.7 中工作,有问题的 SWC 作为构建路径库被引入,理论上设置为“合并到代码中”,直到现在在实践中,它的类可以从任何地方访问。
但是, getDefinitionByName() 不起作用,即使我可以确认它评估的类存在并且可以自由访问。
下面是我在类构造函数中处理的内容。
1:
public function MyClass() {
var lev:MovieClip = new Level1();
}
2:
public function MyClass(id:uint) { // For this example, id == 1
var lClass:Class = getDefinitionByName("Level"+id) as Class;
var lev:MovieClip = new lClass();
}
理论上,#1 和#2 应该产生完全相同的结果,即“lev”是 Level1() 类的一个新实例,对吧?但是#1 有效,#2 抛出ReferenceError: Error #1065: Variable Level1 is not defined.
更莫名其妙的是,我在同一个类的方法中也得到了几乎完全相同的东西,唯一的区别是所说的方法调用了不同类的静态方法,而后者又调用了 getDefinitionByName()。静态方法是否有所作为,如果有,为什么?