PDA

Просмотр полной версии : [PureMVC] Ссылка на app в медиаторе


BeDLiNt
03.10.2009, 16:12
При старте приложения регистрируются несколько медиаторов компонентов. Один из компонентов создаётся динамически и должен выводиться на сцену по событию, которое ловит медиатор этого компонента. Так вот, чтобы вывести этот компонент получается мне нужна ссылка на основное приложение, чтобы знать куда выводить этот компонент (если конкретнее, то это должно быть popup окно). Как её получить? Или есть ли какие либо другие пути решения этой задачи?

cauchy
03.10.2009, 20:19
Хмм... Могу попробовать объяснить, как делаю я. У меня всегда есть медиатор StageMediator (он регистрируется первым, хотя это не особо важно). Его viewComponent - сцена (ну или спрайт, в котором находится всё приложение). И ещё в этом медиаторе есть public метод addChildToStage( displayObj: DisplayObject ):void {stage.addChild(displayObj)};
итого, чтобы в любом другом медиаторе добавить что-то на сцену, пишется что-то вроде:
StageMediator(facade.retrieveMediator(StageMediator.NAME)).addChildToStage(viewComponent);
Не знаю, хороший ли это метод или нет, но пока пользуюсь им. Если что-то не понятно - спрашивай.

BeDLiNt
04.10.2009, 09:34
Спасибо за идею.
Но получаю ссылку на DisplayObject основного приложения следующим образом:


var main:DisplayObject = facade.retrieveMediator(ApplicationMediator.NAME).getViewComponent() as DisplayObject;



Незнаю, насколько верно так делать, относительно идеи PMVC, так что если у кого есть ещё какие либо мысли по этому поводу, буду очень рад выслушать.

etc
04.10.2009, 11:29
PureMVC не смотрел и не юзал, но в любом случае подобный подход неверен, в силу того, что один из детей сам планирует попасть на стейдж.

BeDLiNt
04.10.2009, 13:32
etc: Да, действительно, вывод его надо делать в ApplicationMediator. Так и сделал.

inozemcev
27.09.2010, 19:19
Странный вывод.

Я бы все же придерживался тезиса о том, что условный stage mediator умеет добавлять и удалять объекты со сцены но по существу не знает что это за объекты.

Динамически созданный визуальный объект через свой медиатор отправляет оповещение со ссылкой на самого себя. Зарегистрированная в ApplicationFacade команда,переопределяя execute, вытаскивает этот объект через notification.getbody() as DisplayObject и добавляет его на сцену через api stage mediator - а - функции api медиатора определяйте сами.