2013-11-26 1 views
0

Я использую Flash Builder 4.7, и я столкнулся с странной проблемой, без каких-либо изменений в классе, который происходит в моем случае:VerifyError: Ошибка # 1053: Недопустимое переопределение (конструктор) в (классе)

VerifyError: Error #1053: Illegal override of HUDScreen in mobile_ui.screens.HUDScreen. 

Этот класс расширяет Sprite и реализует интерфейс. Насколько я знаю, все методы в интерфейсе имеют правильные прототипы. В этом классе нет переопределенных свойств или функций. Мы также используем роботы для инъекций зависимостей, если это имеет значение.

Определение класса

public class HUDScreen extends Sprite implements IHUDScreen 
{ 
} 

Конструктор

public function HUDScreen() 
{ 

} 

Определение интерфейса

public interface IHUDScreen extends IEventDispatcher 
{ 

} 

Я пытался очистки проекта, я удалил и повторно импортировать проект, я «Я изменил пакет с ui.screens.HUDScreen на mobile_ui.screens.HUDScreen. Ничего не изменило ошибку.

Любые другие предложения были бы весьма полезны на этом этапе!

Спасибо за ваше время.

Редактировать: Я добавил определение класса, определение интерфейса и конструктор.

ОБНОВЛЕНИЕ: Я смог преодолеть эту проблему, я изложил то, что я сделал в своем ответе ниже. Меня все еще интересуют чьи-то мысли или идеи о том, как это могло произойти, или, возможно, более конкретное решение.

Еще раз спасибо всем, кто нашел время, чтобы рассмотреть этот вопрос!

+0

Нам нужно увидеть код, который поможет. По крайней мере, нам нужно увидеть определение класса, а также определение метода HUDScreen. –

+0

Я добавил то, о чем вы просили, я не уверен, что они проливают свет на ситуацию. Я не могу писать больше, так как это довольно большой класс, и это частный код. Надеюсь, это даст вам кое-что для работы. Спасибо, что нашли время, чтобы прочитать мой пост. –

+0

Вы пытались создать более ранние версии Flash Builder или с более ранней совместимостью FP? – Vesper

ответ

3

Возможно, это связано с неправильной реализацией интерфейса, который не обнаружен компилятором. Следующий код пропущено вызывает ошибку:

public class Foo implements IFoo 
{ 
    public function bar():String { return ""; } 
} 

public interface IFoo 
{ 
    function get bar():String; 
} 

проблема вызвана тем фактом, что IFoo.bar является геттером, но Foo.bar() является нормальным способом. Это своего рода ошибка, которую можно легко пропустить при просмотре кода, и это будет исправлено, если вы удалите и перепишите все.

+0

Это ответ, который мне действительно помог. У меня были функции, которые были getters в классе, но не должны были соответствовать интерфейсу, который реализовал этот класс. – frankhermes

+0

Я устанавливаю это как принятый ответ, поскольку он довольно конструктивен, чем мой собственный ответ. Я еще не сталкивался с этой проблемой. –

0

Я до сих пор не знаю, почему это произошло или как. Тем не менее, я смог снова заставить его работать.

Моя идея состояла в том, чтобы удалить все методы из класса и добавить заглушки для всех методов в интерфейсе. Затем добавьте фактические методы назад один за другим, пока я не увижу, где, возможно, возникла проблема.

Необычно, после восстановления методов по одному и тестирования каждый раз он работает.

Класс (по существу, код, вероятно, немного отличается), тот же, и теперь он работает.

Я по-прежнему ошеломлен, но по крайней мере я могу двигаться дальше.

Надеюсь, это может помочь кому-то.

+0

У меня была эта ошибка, потому что расширение stageSync или stageObserver. Не помню – ThanksBro

+0

Я считаю, что мы используем один из них, я рассмотрю его, если эта проблема снова появится. Спасибо за предложение! –