![]() |
|
||||||||||
|
|||||
|
Добрый день.
Возник вопрос по данному фреймворку, точнее задача, которую хотелось бы решить поизящнее с вашей помощью. В приложении есть система окон - кастомные DisplayObject'ы, время от времени появляющиеся на сцене и убираемые. Каждое из которых реализует Singleton и имеет метод для обновления информации update(...someParams). Собственно задача - реализовать менеджер окон в рамках robotlegs. Понятно, что изначально мы диспатчим некое событие открытия окна с типом нужного нам окна и параметрами для обновления информации в окне. - Можно связать событие с командой, но из команды трогать медиатор конкретного окна нежелательно. - Можно подписать медиатор окна на обработку события "открыть окно", если тип совпадает, то помещаем окно на сцену, только как медиатор поймает событие, если его viewComponent не на сцене и по сути медиатор неактивен и вообще ничего нам не поймает. Подскажите, пожалуйста, как это можно реализовать?
__________________
Стой! Опасная зона! Работа мозга! |
|
|||||
|
Ну у вас же окна не в воздухе подвешиваются? Вы их куда-то добавляете, например, в какой нибудь MasterView. У него есть свой медиатор. Вот этот медиатор и должен рулить окнами и ловить события.
Добавлено через 2 минуты Цитата:
Добавлено через 4 минуты Цитата:
__________________
משיח לא בא משיח גם לא מטלפן Последний раз редактировалось alatar; 13.06.2011 в 19:49. |
|
|||||
|
Цитата:
Или в какой момент времени вы имеете ввиду брать информацию? Цитата:
Цитата:
Главный медиатор отловит событие "создать окно", а дальше... К экземплярам окон и к медиаторам этих окон он же доступа не имеет.
__________________
Стой! Опасная зона! Работа мозга! |
|
|||||
|
Цитата:
Доступ к медиаторам не нужен (если у окна есть модель), да и не положено одному медиатору знать о существовании другого. Цитата:
__________________
משיח לא בא משיח גם לא מטלפן |
|
|||||
|
Вас не затруднит написать в общих чертах всю схему, как она была бы на ваш взгляд рациональнее. А то что то у меня из мозаики картина целая все никак не сложится.
Добавлено через 1 час 5 минут Что-то я тут посмотрел - это не окна получаются, а экраны скорее, всегда какой-то один из них должен быть на сцене, но не суть... Посылаем событие на смену экрана, событие инициализирует команду, команда обращается к текущей модели экранов, вызывает какой-то метод у модели. Если в модели что-то изменяется - модель посылает событие об этом изменении. Главный медиатор контейнера для экранов отлавливает данное событие. Если нужно обновить контент текущего экрана - обновляет его, если же требуется смена экрана - старый удаляет, новый создает. Ничего я антимвцшного тут не наделал страшного? Кстати, а чем плохи синглтоны? Пусть эти экраны в памяти висят, менятся они будут довольно часто... 2 экземпляра одного и того же экрана не должны создаваться. Вроде норм должно быть.
__________________
Стой! Опасная зона! Работа мозга! |
|
|||||
|
Тогда лучше создать их в медиаторе главного вида и больше не убивать. Можно даже со сцены не удалять, а просто скрывать их (типа visible=false), ну и по событию менять. Главный вид — что-то типа ViewStack из флекса. У каждого экрана своя модель, на которую он реагирует. Если удалять не нужно, то все будет создано один раз.
Цитата:
__________________
משיח לא בא משיח גם לא מטלפן |
|
|||||
|
Спасибо, буду пилить)
__________________
Стой! Опасная зона! Работа мозга! |
![]() |
![]() |
Часовой пояс GMT +4, время: 17:39. |
|
|
« Предыдущая тема | Следующая тема » |
|
|