Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > API приложений и сред

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 13.06.2011, 19:06
marat_sa вне форума Посмотреть профиль Отправить личное сообщение для marat_sa Посетить домашнюю страницу marat_sa Найти все сообщения от marat_sa
  № 1  
Ответить с цитированием
marat_sa
 
Аватар для marat_sa

Регистрация: Nov 2006
Сообщений: 487
Отправить сообщение для marat_sa с помощью ICQ Отправить сообщение для marat_sa с помощью Skype™
По умолчанию [Robotlegs] Менеджер окон

Добрый день.
Возник вопрос по данному фреймворку, точнее задача, которую хотелось бы решить поизящнее с вашей помощью.

В приложении есть система окон - кастомные DisplayObject'ы, время от времени появляющиеся на сцене и убираемые. Каждое из которых реализует Singleton и имеет метод для обновления информации update(...someParams).
Собственно задача - реализовать менеджер окон в рамках robotlegs.

Понятно, что изначально мы диспатчим некое событие открытия окна с типом нужного нам окна и параметрами для обновления информации в окне.
- Можно связать событие с командой, но из команды трогать медиатор конкретного окна нежелательно.
- Можно подписать медиатор окна на обработку события "открыть окно", если тип совпадает, то помещаем окно на сцену, только как медиатор поймает событие, если его viewComponent не на сцене и по сути медиатор неактивен и вообще ничего нам не поймает.

Подскажите, пожалуйста, как это можно реализовать?
__________________
Стой! Опасная зона! Работа мозга!

Старый 13.06.2011, 19:46
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 2  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Ну у вас же окна не в воздухе подвешиваются? Вы их куда-то добавляете, например, в какой нибудь MasterView. У него есть свой медиатор. Вот этот медиатор и должен рулить окнами и ловить события.

Добавлено через 2 минуты
Цитата:
и параметрами для обновления информации в окне.
Не проще ли брать эту информацию из модели?

Добавлено через 4 минуты
Цитата:
Каждое из которых реализует Singleton
Зачем реализовывать Singleton? Это контролируется в Context.
__________________
משיח לא בא
משיח גם לא מטלפן


Последний раз редактировалось alatar; 13.06.2011 в 19:49.
Старый 13.06.2011, 20:18
marat_sa вне форума Посмотреть профиль Отправить личное сообщение для marat_sa Посетить домашнюю страницу marat_sa Найти все сообщения от marat_sa
  № 3  
Ответить с цитированием
marat_sa
 
Аватар для marat_sa

Регистрация: Nov 2006
Сообщений: 487
Отправить сообщение для marat_sa с помощью ICQ Отправить сообщение для marat_sa с помощью Skype™
Цитата:
Не проще ли брать эту информацию из модели?
Лишнее привязывание к модели? Событие пришло, в нем все нужные данные есть.
Или в какой момент времени вы имеете ввиду брать информацию?

Цитата:
Зачем реализовывать Singleton? Это контролируется в Context.
Ну кстати да, через mapSingleton'ы...

Цитата:
Ну у вас же окна не в воздухе подвешиваются? Вы их куда-то добавляете, например, в какой нибудь MasterView. У него есть свой медиатор. Вот этот медиатор и должен рулить окнами и ловить события.
Да, контейнер есть, нужно к нему медиатор значит написать.
Главный медиатор отловит событие "создать окно", а дальше... К экземплярам окон и к медиаторам этих окон он же доступа не имеет.
__________________
Стой! Опасная зона! Работа мозга!

Старый 13.06.2011, 20:36
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 4  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
К экземплярам окон и к медиаторам этих окон он же доступа не имеет.
Ну раз вы их регистрируете как синглтоны, то можете их свободно инжектить. Кстати, зачем вообще их делать синглтонами?
Доступ к медиаторам не нужен (если у окна есть модель), да и не положено одному медиатору знать о существовании другого.
Цитата:
Лишнее привязывание к модели? Событие пришло, в нем все нужные данные есть.
Модель поменялась, окно отреагировало. В любой момент. И поменять при желании можно практически из любого места, просто запустив команду по событию. А заодно и показать это окно, по тому же событию.
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 13.06.2011, 22:03
marat_sa вне форума Посмотреть профиль Отправить личное сообщение для marat_sa Посетить домашнюю страницу marat_sa Найти все сообщения от marat_sa
  № 5  
Ответить с цитированием
marat_sa
 
Аватар для marat_sa

Регистрация: Nov 2006
Сообщений: 487
Отправить сообщение для marat_sa с помощью ICQ Отправить сообщение для marat_sa с помощью Skype™
Вас не затруднит написать в общих чертах всю схему, как она была бы на ваш взгляд рациональнее. А то что то у меня из мозаики картина целая все никак не сложится.

Добавлено через 1 час 5 минут
Что-то я тут посмотрел - это не окна получаются, а экраны скорее, всегда какой-то один из них должен быть на сцене, но не суть...

Посылаем событие на смену экрана, событие инициализирует команду, команда обращается к текущей модели экранов, вызывает какой-то метод у модели. Если в модели что-то изменяется - модель посылает событие об этом изменении. Главный медиатор контейнера для экранов отлавливает данное событие. Если нужно обновить контент текущего экрана - обновляет его, если же требуется смена экрана - старый удаляет, новый создает. Ничего я антимвцшного тут не наделал страшного?

Кстати, а чем плохи синглтоны? Пусть эти экраны в памяти висят, менятся они будут довольно часто... 2 экземпляра одного и того же экрана не должны создаваться. Вроде норм должно быть.
__________________
Стой! Опасная зона! Работа мозга!

Старый 14.06.2011, 00:36
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 6  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Тогда лучше создать их в медиаторе главного вида и больше не убивать. Можно даже со сцены не удалять, а просто скрывать их (типа visible=false), ну и по событию менять. Главный вид — что-то типа ViewStack из флекса. У каждого экрана своя модель, на которую он реагирует. Если удалять не нужно, то все будет создано один раз.
Цитата:
Кстати, а чем плохи синглтоны? Пусть эти экраны в памяти висят, менятся они будут довольно часто...
Просто в данном случае это будет лишний функционал. У вас все равно с экранами работает только одни участник. Он и гарантирует создание нужного количества экземпляров.
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 14.06.2011, 11:56
marat_sa вне форума Посмотреть профиль Отправить личное сообщение для marat_sa Посетить домашнюю страницу marat_sa Найти все сообщения от marat_sa
  № 7  
Ответить с цитированием
marat_sa
 
Аватар для marat_sa

Регистрация: Nov 2006
Сообщений: 487
Отправить сообщение для marat_sa с помощью ICQ Отправить сообщение для marat_sa с помощью Skype™
Спасибо, буду пилить)
__________________
Стой! Опасная зона! Работа мозга!

Создать новую тему Ответ Часовой пояс GMT +4, время: 17:39.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 17:39.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.