我正在使用Flash Builder 4.7,而且我遇到了一个奇怪的问题,我没有对这个类进行任何更改:
VerifyError: Error #1053: Illegal override of HUDScreen in mobile_ui.screens.HUDScreen.
该类扩展了Sprite,并实现了一个接口。据我所知,界面中的所有方法都有适当的原型。此类中没有重写的属性或函数。我们正在使用robotlegs进行依赖注入,如果这是相关的。
班级定义
public class HUDScreen extends Sprite implements IHUDScreen
{
}
构造
public function HUDScreen()
{
}
接口定义
public interface IHUDScreen extends IEventDispatcher
{
}
我已经尝试清理项目,我已删除并重新导入项目,我已将包从ui.screens.HUDScreen更改为mobile_ui.screens.HUDScreen。没有改变错误。
此时,我们将非常感谢任何其他建议!
感谢您的时间。
编辑:我添加了类定义,接口定义和构造函数。
更新:我已经能够解决这个问题,我已经在下面的答案中概述了我的所作所为。我仍然对任何人对如何发生这种情况的想法或想法感兴趣,或者可能是一个更具体的解决方案。
再次感谢所有花时间查看此问题的人!
答案 0 :(得分:4)
这似乎是由编译器未检测到的接口的错误实现引起的。以下代码剪切导致错误:
public class Foo implements IFoo
{
public function bar():String { return ""; }
}
public interface IFoo
{
function get bar():String;
}
问题是由IFoo.bar
是一个吸气剂,但Foo.bar()
是一种常规方法。这是一种在查看代码时很容易错过的错误,如果您删除并重写所有内容,这将会被修复。
答案 1 :(得分:0)
我仍然不知道为什么会这样或者如何发生。但是,我能够让它再次运作。
我的想法是从类中删除所有方法,并为接口中的所有方法添加存根。然后,逐个添加实际方法,直到我可以看到问题发生的位置。
奇怪的是,在一次恢复一个方法并且每次都进行测试之后,它现在可以正常工作。
该类(基本上,代码可能略有不同)也是如此,现在它可以工作。
我仍然感到困惑,但至少我现在可以继续前进。
希望这可以帮助某个人。