什么导致Flash错误#2012(无法实例化类)?

13

我刚接触ActionScript 3,遇到了一个问题:

使用Flex Builder 3,我创建了一个包含几个简单类的项目。如果类A中的代码实例化了类B的对象(在其自己的源文件中),则代码可以编译通过,但是我会收到以下运行时错误:

ArgumentError:错误#2012:无法实例化B类。

有人能解释一下我做错了什么吗?

更新:请查看下面我自己的答案(由于我还没有注册,所以无法将其置顶)。

3个回答

21
我终于意识到了问题所在:B类是从DisplayObject派生的,现在我才明白DisplayObject是一个抽象类。B类没有实现这些抽象成员,所以出错了。我可能会将B类改为从Sprite派生。
这似乎是一个应该被编译器捕捉到的问题。但是,它没有被捕捉到是否意味着抽象成员的实现可以等到运行时再处理?即使如此,至少得到一个编译器警告也是好的。
感谢大家的回答,希望它们能帮助其他遇到2012错误的人。

1
编译器无法捕获它,因为没有抽象关键字可以供编译器选择。它通过抛出异常来强制执行,因此会出现错误。 - NebulaFox

2
这通常意味着类信息未包含在 SWF 文件中。
请确保您已导入该类,并且某个地方有对它的引用(这样编译器才会将其包含在 SWF 中)。
顺便说一下,这里是运行时错误代码:

http://livedocs.adobe.com/flex/201/langref/runtimeErrors.html

“不过没有太多有用的信息。” “迈克·钱伯斯”

mesh@adobe.com


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接