Eri*_*c N 3 eval actionscript-3
我正在尝试使用.SWC库(从.FLA文档导出)来存储游戏的图形数据.在我的一个类中,我正在尝试附加所请求级别的MovieClip的实例,但我正在尝试使用getDefinitionByName(),因此我可以根据级别编号引入正确的类.我正在使用Flash Builder 4.7,并且有问题的SWC作为构建路径库被设置为"合并到代码中",理论上直到现在实际上可以从任何地方访问它的类.
但是,getDefinitionByName()无效,即使我可以确认它所评估的类是否存在且可以自由访问.
下面是我在类构造函数中处理的内容.
1:
public function MyClass() {
var lev:MovieClip = new Level1();
}
Run Code Online (Sandbox Code Playgroud)
2:
public function MyClass(id:uint) { // For this example, id == 1
var lClass:Class = getDefinitionByName("Level"+id) as Class;
var lev:MovieClip = new lClass();
}
Run Code Online (Sandbox Code Playgroud)
从理论上讲,#1和#2应该产生完全相同的结果,即"lev"是Level1()类的新实例,对吧?但#1起作用,#2抛出ReferenceError: Error #1065: Variable Level1 is not defined.
更令人费解的是,我在同一个类的方法中也得到了几乎完全相同的东西,唯一的区别是所述方法调用不同类的静态方法,而后者又调用getDefinitionByName().静态方法是否有所不同,如果是,为什么?
我从来没有使用过getDefinitionByName(),但是快速浏览一下LiveDocs会让你看起来需要提供一个完整的包路径.
var lClass:Class = getDefinitionByName("Level"+id) as Class;
Run Code Online (Sandbox Code Playgroud)
应该
var lClass:Class = getDefinitionByName("com.your.package.here.Level"+id) as Class;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4115 次 |
| 最近记录: |