3

我正在尝试使用 .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()。静态方法是否有所作为,如果有,为什么?

4

1 回答 1

6

我从来没有使用过getDefinitionByName(),但是快速浏览一下 LiveDocs 会让您看起来需要提供完整的包路径。

var lClass:Class = getDefinitionByName("Level"+id) as Class;

应该

var lClass:Class = getDefinitionByName("com.your.package.here.Level"+id) as Class;

getDefinitionByName()

于 2013-01-30T18:06:24.257 回答