2012-10-25 6 views
0

보기와 중재자에 문제가 있습니다. 나는 상점과 그의 중재자라는 이름의 견해를 가지고있다. 중재자가 등록되지 않았습니다.

나는 나의 상황에 매핑 : 코드 :

mediatorMap.mapView(Shop, ShopMediator); 

가 그럼 난 쇼핑의 객체를 생성하고 바로 게임에서 사용자 열린 가게로 무대에 추가합니다. 문제는 응용 프로그램에서 조정자가 전혀 호출되지 않는다는 것입니다.

누구나 이유가 무엇인지 알 수 있습니까?

아래 코드 조각을 붙여 넣었습니다.

컨텍스트 초기화 : 코드 :

코드 : 가게의

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 개체가 추가되었습니다. 누군가 내 코드에 무슨 문제가 있는지 알고 있습니까?

+0

컨텍스트를 만드시겠습니까? –

+0

예, 물론입니다! private 함수 createContext() : void { \t _contextView = new Sprite(); \t addChild (_contextView); \t _context = new AquaGameContext (_contextView); } – Pastan

+0

"중재자는 응용 프로그램에서 전혀 호출되지 않습니다."-이 경우 무엇을 기대합니까? –

답변

0

응용 프로그램 설정이 내 것과 비슷한 경우 실제로 중재자를 만들거나 활성화하지 못할 수 있습니다. mediatorMap은 필요한 구성 요소에 대한 구성 요소의 맵을 유지합니다. ShopGameFace 모두의 생성자에 아래의 코드를 추가

시도 :

new LazyMediatorActivator(this); 

이쪽 ShopGameFace 무대에 충돌 할 때 중재자가 활성화됩니다 있는지 확인해야합니다. 활성제는 robotlegs.utilities.lazy 패키지에 있습니다.

그래도 작동하지 않는다면 shop이 스테이지를 강타 할 때 수동으로 mediatorMap.createMediator(shop)으로 전화해야하지만 기본 제공되는 게으른 옵션이 더 좋습니다.