我是 ActionScript 3 的新手,遇到了一个问题:
使用 Flex Builder 3,我创建了一个包含几个简单类的项目。如果 A 类中的代码实例化 B 类的对象(B 类在其自己的源文件中),则代码编译正常,但出现以下运行时错误:
ArgumentError:错误 #2012:无法实例化 B 类。
有人可以解释我做错了什么吗?
更新:请在下面查看我自己的答案(由于我尚未注册,我无法将其投票到顶部)。
我是 ActionScript 3 的新手,遇到了一个问题:
使用 Flex Builder 3,我创建了一个包含几个简单类的项目。如果 A 类中的代码实例化 B 类的对象(B 类在其自己的源文件中),则代码编译正常,但出现以下运行时错误:
ArgumentError:错误 #2012:无法实例化 B 类。
有人可以解释我做错了什么吗?
更新:请在下面查看我自己的答案(由于我尚未注册,我无法将其投票到顶部)。
我终于意识到出了什么问题:B 类是 DisplayObject 的子类,我现在看到它是一个抽象类。B 类没有实现抽象成员,因此出现错误。我可能会将 B 类更改为 Sprite 的子类。
这似乎是编译器应该发现的问题。这并不意味着抽象成员的实现可以等到运行时吗?即使是这样,至少得到一个编译器警告会很好。
感谢大家的回答,希望他们能帮助其他遇到错误 2012 的人。
这通常意味着类信息不包含在 SWF 中。
确保您正在导入该类,并且在某处有对它的引用(因此编译器会将其包含在 SWF 中)。
顺便说一句,这里是运行时错误代码:
http://livedocs.adobe.com/flex/201/langref/runtimeErrors.html
(虽然没有太多有用的信息)
迈克室
网格@adobe.com
值得注意的是,如果您包含其他人构建的类,并且他们使用 Flash CS3 而您使用的是 Flex,或者反之亦然,那么每个类的核心库是不同的,并且有些东西不包含在两者中。查看两个参考文档以确保:
CS3: http: //livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/
弹性: http: //livedocs.adobe.com/flex/2/langref/