Actionscript 3 Starling和PureMVC

Actionscript 3 Starling和PureMVC,actionscript-3,puremvc,starling-framework,Actionscript 3,Puremvc,Starling Framework,我如何在我的PureMVC应用程序中获得一个视图来使用Starling和它自己的中介并与应用程序的其余部分通信 应用程序的其余部分将不使用starling 从我到目前为止的研究来看,似乎starling只能在swf的主“文档类”上激活?好的,所以我想出了如何做到这一点。 一些你需要知道的事情 虽然Starling感觉像一个黑匣子/围墙花园,但在最新版本中,您确实可以通过Starling.current.root 如果您有对stage的引用,您可以在任何地方创建starling实例。所以你的调解人

我如何在我的PureMVC应用程序中获得一个视图来使用Starling和它自己的中介并与应用程序的其余部分通信

应用程序的其余部分将不使用starling


从我到目前为止的研究来看,似乎starling只能在swf的主“文档类”上激活?

好的,所以我想出了如何做到这一点。 一些你需要知道的事情

  • 虽然Starling感觉像一个黑匣子/围墙花园,但在最新版本中,您确实可以通过
    Starling.current.root
  • 如果您有对stage的引用,您可以在任何地方创建starling实例。所以你的调解人看起来像

    override public function onRegister():void {
        starlingInstance = new Starling(StarlingContainer, stageReference);
        starlingInstance.addEventListener(starling.events.Event.ROOT_CREATED, onStarlingRootCreated);
        starlingInstance.viewPort = new Rectangle(x, y, width, height);
        starlingInstance.start();
    }
    
    private function onStarlingRootCreated(event:starling.events.Event):void {
    
        viewComponent = Starling.current.root as StarlingContainer;
    }
    
  • 重要的部分是在将viewComponent设置为Starling rootClass之前,等待
    事件。ROOT\u创建了
    事件

  • 您可以使用
    Starling.current.stage
    访问starging stage3d上下文,或使用
    Starling.current.nativeStage
    访问nativeStage这对于侦听StarlingContainer上下文之外的事件非常有用
  • 以这种方式设置中介后,您可以像对待任何其他viewComponent一样对待starling viewComponent、发送通知等


    非常感谢。

    这很好,但是如果将多个Starling实例与可能的Away3D实例组合在一起,会怎么样?您是否会使用PureMVC代理来表示本例中的stage3D实例?我想这应该是一个评论?但是是的,您可以将stage3D上下文传递到starling实例中,并使用代理来管理它。您肯定不会使用代理与stage3D实例(或Away3D)交互。代理用于提供对应用程序数据和远程服务的访问。多亏了克里夫的反馈,我认为混淆的部分原因在于Away3d引用Stage3D实例的方式。特别是Stage3Dmanager类的getFreeStage3DProxy()和View3D类的相关stage3DProxy属性,因此,尽管从语义上讲,将其称为“中介”是有意义的,但实际上我不确定。如果您查看lee Brimelow的教程,他同时拥有initStarling和initAway3D方法,在PureMVC世界中,这将分别是Starling和Away3D mediator onRegister方法的一部分。