0

ビューとメディエーターに問題があります。Shopという名前のビューと彼のメディエーターがあります。

私は自分のコンテキストでそれをマッピングしました: コード:

mediatorMap.mapView(Shop, ShopMediator);

次に、Shop のオブジェクトを作成し、ユーザーがゲームでショップを開くのと同じようにステージに追加します。問題は、メディエーターがアプリケーションでまったく呼び出されないことです。

何が原因かわかる方いますか?

以下に私のコードの一部を貼り付けました。

コンテキストの初期化: コード:

override public function startup():void
{
....
mediatorMap.mapView(Shop, ShopMediator);
...
mediatorMap.mapView(GameFace, GameFaceMediator);
...
}

Shop のオブジェクトは、GameFace で作成されます。

コード:

public function initShop(aX:Array):void
    {
        shop = new Shop();
        _aX = aX;

    }

また、プレイヤーがゲーム内でショップを開くときにシーンに追加されました:

コード:

public function openShop(tab:uint = 100):void
{
    shop = new Shop();
    addChild(shop);
    shop.init(_aX);
    shop.x = 396;
    shop.y = 267;
}

もちろんGameFaceのオブジェクトも表示リストに追加されました。誰かが私のコードに何が間違っているか知っていますか?

4

1 に答える 1

0

アプリケーションのセットアップが私のようなものである場合、実際にはメディエーターを作成/アクティブ化していない可能性があります。必要なメディエーターへのコンポーネントのmediatorMapマップを保持するだけです。

Shopとの両方のコンストラクターに以下のコードを追加してみてくださいGameFace

new LazyMediatorActivator(this);

これにより、メディエーターがステージに到達したときに確実にアクティブになりますShopGameFaceアクティベーターはパッケージにありますrobotlegs.utilities.lazy

それがうまくいかない場合は、 がステージにmediatorMap.createMediator(shop)到達したときに手動で呼び出す必要があるかもしれませんが、組み込みの遅延オプションを使用することをお勧めします。shop

于 2012-10-25T12:29:25.260 に答える