У меня возникают трудности при передаче строго типизированного объекта AttractView
другому методу addView()
, который ожидает интерфейс IWizardView
, который AttractView
реализует.
Когда я передаю его как есть (как показано ниже), я получаю ошибку компиляции CaptureApplication.as, Line 120 1067: Implicit coercion of a value of type AttractView to an unrelated type IWizardView.
Приведение к IWizardView
или BaseView
перед передачей приводит к аналогичной ошибке во время выполнения.
Класс применения:
public class CaptureApplication extends MovieClip
{
public var attractView : AttractView;
public var captureView : CaptureView;
public var reviewView : ReviewView;
public var completeView : CompleteView;
protected var wizard : Wizard;
public function CaptureApplication()
{
// Create views
attractView = new AttractView();
captureView = new CaptureView();
reviewView = new ReviewView();
completeView = new CompleteView();
// Create wizard and add views to sequence
wizard = new Wizard( this );
wizard.addView( attractView );
wizard.addView( captureView );
wizard.addView( reviewView );
wizard.addView( completeView );
}
// ...
}
Мастер:
public class Wizard extends EventDispatcher
{
// ...
public function addView ( pView : IWizardView ) : void
{
// ...
}
//...
}
И пример просмотра:
public class AttractView extends BaseView implements IWizardView
{
// ...
}
Архитектура, на которую я надеюсь (упрощено для ясности):
CAPTURE LIBRARY (AS3 SWC)
/ classes
/ wizard
/ IWizardView
/ Wizard
/ capture
/ IView
/ BaseView
/ AttractView
/ CaptureView
/ (etc.)
CAPTURE APPLICATION (Flash)
/ classes
/ CaptureApplication
Идея заключается в том, что я создаю несколько приложений «захвата» с одинаковыми пользовательскими интерфейсами, поэтому я хотел бы извлечь общие элементы в библиотеку и расширить их по мере необходимости для каждого уникального приложения захвата.
Обновление 1:
IWizardView
и Wizard
фактически живут в отдельной библиотеке SWC, которая включена в проект CaptureApplication
. Также стоит отметить, что FLA и проекта FB включают SWC. Возможно, есть конфликт? Как только я переместил все классы из библиотеки в проект и удалил SWC из проекта и FLA, все заработало.
У меня будет еще время поиграть и исследовать завтра. Обновление, чтобы следовать.
Обновление 2:
Я нашел, где моя архитектура ломается. Я могу нормально хранить свои интерфейсы и класс BaseView
в моей библиотеке SWC. Проблема возникает, как только я пытаюсь переместить мои представления (AttractView
и т. Д.) Из проекта приложения в библиотеку SWC. Моя папка libs объединена в код, а не в режиме реального времени. Есть идеи?