2012-10-25 3 views
0

J'ai un problème avec les vues et les médiateurs. J'ai vue nommé Shop et son médiateur.Le médiateur n'est pas enregistré

Je cartographiés dans mon contexte: code:

mediatorMap.mapView(Shop, ShopMediator); 

Puis-je créer objet de boutique et ajouter à l'étape comme utilisateur magasin ouvert dans le jeu. Le problème est que le médiateur n'est pas appelé du tout dans l'application.

Quelqu'un sait quelle est la raison?

Ci-dessous collé un morceau de mon code.

initialisation du contexte: code:

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

Objet de magasin est de créer dans GameFace:

code:

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

    } 

Et a été ajouté à la scène quand le joueur magasin ouvert dans le jeu:

Code:

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

Bien sûr, l'objet de GameFace a été ajouté à la liste d'affichage. Quelqu'un sait ce qui est mal dans mon code?

+0

Créez-vous un contexte? –

+0

Oui, bien sûr! fonction privée createContext(): void { \t _contextView = new Sprite(); \t addChild (_contextView); \t _context = new AquaGameContext (_contextView); } – Pastan

+0

"le médiateur n'est pas appelé du tout dans l'application" - qu'attendez-vous dans ce cas? –

Répondre

0

Si la configuration de votre application est similaire à la mienne, il est possible que vous n'ayez pas créé/activé le médiateur. Le mediatorMap garde juste une carte des composants aux médiateurs dont ils ont besoin.

Essayez d'ajouter le code ci-dessous pour les constructeurs des deux Shop et GameFace:

new LazyMediatorActivator(this); 

Cela devrait vous assurer que votre médiateur s'activé lorsque le Shop et GameFace a frappé la scène. L'activateur se trouve dans le paquet robotlegs.utilities.lazy.

Si cela ne fonctionne pas, vous devrez peut-être appeler manuellement mediatorMap.createMediator(shop) lorsque shop atteint la scène, mais l'option paresseuse intégrée est préférable.