我正在尝试使用.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( )。静态方法是否有所不同,如果是,为什么?
答案 0 :(得分:6)
我从未使用getDefinitionByName()
,但快速查看LiveDocs会让您看起来需要提供完整的包路径。
var lClass:Class = getDefinitionByName("Level"+id) as Class;
应该是
var lClass:Class = getDefinitionByName("com.your.package.here.Level"+id) as Class;