0

我对观点和调解人有一些问题。我有名为 Shop 和他的调解员的视图。

我在我的上下文中映射它:代码:

mediatorMap.mapView(Shop, ShopMediator);

然后我创建 Shop 对象并添加到阶段,就像用户在游戏中打开商店一样。问题是在应用程序中根本没有调用中介。

有谁知道是什么原因?

下面粘贴了我的一段代码。

上下文初始化:代码:

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

商店对象在 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组件映射到他们需要的中介。

尝试将以下代码添加到 and 的构造函数ShopGameFace

new LazyMediatorActivator(this);

这应该确保您的调解器在ShopGameFace上台时被激活。激活器位于包装中robotlegs.utilities.lazy

如果这不起作用,您可能需要在到达阶段mediatorMap.createMediator(shop)时手动调用shop,但内置的惰性选项更可取。

于 2012-10-25T12:29:25.260 回答