저는 Haxe 프로젝트에서 사용하기 위해 다음 마이크로 프레임 워크 Cube https://github.com/xirsys/cube을 배우고 배우고 있습니다.어떻게 큐브 프레임 워크를 사용하여 Haxe의 뷰를 중재자에게 동적으로 매핑합니까?
내가 찾은 예제는 매우 도움이되었지만 내가 만난 예제에는 런타임에 중개자에게보기를 등록하고 매핑하는 것이 필요하지 않습니다.
나는 가깝다고 생각하지만 작동하지 않는 것 같습니다. 내 AppContext의 모습을 보여줍니다. 여기
class AppContext extends Agent<Dynamic, IEvent>
{
public function new(container: Dynamic, autoStart:Bool)
{
super(container, autoStart);
}
override public function initiate()
{
mediatorMap.mapView(Main, MainMediator);
mediatorMap.mapView(Welcome, WelcomeMediator);
injector.mapSingleton(AppModel, container);
dispatch(AgentEvent.STARTUP_COMPLETE, null);
}
}
내가보기 "환영합니다"를 만들 내 홈페이지보기 중재자에서 기본보기를로드 한 후
class Main extends Sprite
{
public var agent: AppContext;
@Inject
public var dm:AppModel;
public function new()
{
super();
addEventListener(Event.ADDED_TO_STAGE, onAdded);
haxe.Log.setColor(0xffffff);
this.name = "main view";
}
public static function main(): Void
{
Lib.current.addChild(new Blastroidz());
}
private function onAdded(e:Event):Void
{
agent = new AppContext(this, false);
agent.addEventHandler(AgentEvent.STARTUP_COMPLETE, onContextStart);
agent.initiate();
}
private function onContextStart(evt:IEvent):Void
{
agent.mediatorMap.createMediator(this);
}
}
이제 내 내 홈페이지보기에 무엇이 일어나고 된 후 나는 그것의 생성 싶습니다 중재자로서 그것을 그렇게 사용하십시오.
class MainMediator extends xirsys.cube.mvcs.Mediator
{
@Inject
public var view:Main;
public var welcome:Welcome;
private var viewManager:NMEViewManager;
override public function onRegister()
{
super.onRegister();
eventDispatcher.addEventHandler(AppEvent.SET_NEW_VIEW, changeViewHandler);
initView();
}
private function initView():Void
{
viewManager = new NMEViewManager(view);
welcome = new Welcome();
viewManager.setView(welcome, NMEViewManager.FADE);
///// this is the important line that doesn't seem to work \\\\\\
mediatorMap.createMediator(welcome);
}
private function changeViewHandler(e:String):Void
{
trace("change view");
}
내 환영 중재자과 같이 외모와 onRegister가 발생하지 않는 것 내가 viewManager는 환영보기의 기본보기에 따라서 addChild 처리 있습니다 .... 전혀 오류를하지 않고 이것은 잘 작동하는 것 같습니다. 내가 프레임 워크를 모르는
class WelcomeMediator extends xirsys.cube.mvcs.Mediator
{
@Inject
public var view:Welcome;
override public function onRegister()
{
super.onRegister();
view.addEventListener(Event.COMPLETE, onCompleteHandler);
trace("welcome mediator registered");
}
private function onCompleteHandler(e:Event):Void
{
trace("logo complete");
var event:AppEvent = new AppEvent(AppEvent.SET_NEW_VIEW);
event.view_name = AppModel.MAIN;
this.eventDispatcher.dispatch(AppEvent.SET_NEW_VIEW, event);
}
}
}