1

PureMVCアプリで単一のビューを取得して、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. Starling.current.stageこれは、 StarlingContainerStarling.current.nativeStage コンテキストの外部でイベントをリッスンするのに役立ちます。

この方法でメディエータを設定すると、スターリング ビュー コンポーネントを他のビュー コンポーネントと同じように処理したり、通知を送信したりできます。

Starling フォーラムに感謝します。

于 2013-01-07T15:38:46.553 に答える