Я работал и изучал следующую микросреду 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);
}
}
}