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

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

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

Регистрация: Jul 2009
Сообщений: 77
По умолчанию Организация проекта (алгоритм)

Вопрос по организации проекта, неверняка я изобретаю велосипед, поэтому просьба наставить на путь истенный.

Суть идеи:
Проект состоит из двух основных типов объектов - "менеджеры" и "холдеры", помимо основного класса, конечно есть и другие, но это не принципиально. Менеджеры реагируют на события, обрабатывают их и сообщают об изменении своего состояния, сами ничего не отображают. Холдеры решений не принимают - это только контейнеры отбражаемых объектов, ловят сообщения менеджеров об изменениях и отбражают то, что им положено в данном состоянии.
Напрямую объекты неимеют никаких связей, только менеджеры имеют публичные свойства, чтобы можно было определить их состояние в данный момент. Ни один холдер не имеет связи с другим холдером - табу. Никто не может сказать менеджеру изменить состояние, только он сам на основе приходящих эвентов.

Как это работает:
Когда что-то происходит в менеджере или холдере он шлёт соотв. эвент, основной класс его ловит и рассылает его всем менеджерам и холдерам.
Заинтересованные объекты его обрабатывают и шлют свои эвенты, и так далее, Т.е. по сути работа программы это только обмен событиями через объект основного класса. Т.о. большинство основных элементов даже не подозревают о существовании других объектов - им приходит эвент, а кто его послал и из-за чего их не касается.

Пример:
ScreenManager - отвечает за состояния отображения всех объектов. ButtonManager - состояния всех кнопок. MenuHolder - отображаемых объект, в нём находится кнопка фулскрин.
Пользователь кликает кнопку фулскрин в MenuHolder, кнопка шлёт эвент "кнопка фулскрин кликнута", сообщение ловит объект основного класса и рассылает его всем менеджерам и холдерам.
Заинтересован только ScreenManager, остальные не реагируют. ScreenManager в ответ на это событие переводит плеер в полноэкранный режим и шлёт событие "ScreenManager изменил состояние на фулскрин" Его ловил основной объект, рассылает его всем менеджерам и холдерам.
Но в нём заинтересован только ButtonManager, он решает кнопка фулскрин переходит в нажатое состояние и шлёт эвент "кнопка фулскрин нажатое состояние". Основной класс опять рассылает его всем. При этом ButtonManager понятия не имеет есть ли вообще кнопки фулскрин и сколько их и где они.
Но этот эвент доходит до MenuHolder и он циклом по массиву кнопок сообщает всем им, что кнопка фулскрин нажата, ведь даже MenuHolder не знает какие именно кнопки он содержит.
Кнопка фулскрин ловит это событие и нажимается!

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

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

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


 


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


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