我遇到了难以将强类型对象AttractView
传递到另一个方法addView()
,该方法需要AttractView
实现的IWizardView
接口。将强类型对象传递给期望接口的方法
当我将它作为-是(如下所示),我得到的编译错误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
实际生活中所包含的CaptureApplication
项目一个单独的库SWC。还值得注意的是,FB项目的FLA 和都包括SWC。也许有冲突?只要我将所有课程从图书馆搬到项目中,并将SWC从项目和FLA中移除,它就可以工作。
明天我将有更多的时间玩和调查。请按照更新。
更新2:
我发现在我的体系结构断裂。我可以在我的图书馆SWC中保留我的接口和BaseView
类。只要我尝试将我的应用程序项目的视图(AttractView
等)移动到库SWC中,就会出现问题。我的libs文件夹被合并到代码中,而不是实时共享。有任何想法吗?
奇怪,应该工作。 –
这就是我的想法! – marcelebrate
是的。应该肯定会工作。 ...嗯 – Bosworth99