1

如何在我的 PureMVC 应用程序中获得单个视图以使用 Starling 及其自己的中介并与应用程序的其余部分进行通信?

应用程序的其余部分将不会使用八哥。

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

4

1 回答 1

2

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

  1. 虽然 Starling 感觉就像一个黑匣子/围墙花园,但您确实可以在最新版本中通过以下方式获得对 rootClass 的引用 Starling.current.root
  2. 如果您有对 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;
    }
    
  3. Event.ROOT_CREATED重要的部分是在将 viewComponent 设置为 Starling rootClass 之前等待事件。

  4. 您可以使用访问启动 stage3d 上下文Starling.current.stage或使用访问 nativeStageStarling.current.nativeStage 这对于侦听 StarlingContainer 上下文之外的事件很有用。

一旦你以这种方式设置了你的中介,你就可以像对待任何其他的 viewComponent 一样对待你的 starling viewComponent,发送通知等。

非常感谢Starling 论坛

于 2013-01-07T15:38:46.553 回答