繁体   English   中英

AS3:使用getDefinitionByName()时“变量[x]未定义”错误

[英]AS3: “Variable [x] is not defined” error when using getDefinitionByName()

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

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

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

应该

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

请参阅getDefinitionByName()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM