私は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);
}
}
}