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

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

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

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Цитата:
Сообщение от svdsLis Посмотреть сообщение
- в каждую под-модель передавать GlobalModel и из неё вызывать диспетчерезацию?
Нет. Каждая модель сама посылает свои события. Все кому нужно, могут слушать эти события, подписавшись на них непосредственно в этой конкретной модели.
Или:
Цитата:
Сообщение от svdsLis Посмотреть сообщение
- или делать bubble (но это не удобно)
И это очень даже удобно. Другое дело, что мастерить "всплывание" тупо лень (каюсь, я сам до этого так и не дошел, подписываю вьюхи и контроллеры непосредственно на нужные им модели).

Цитата:
Сообщение от svdsLis Посмотреть сообщение
- использовать только одно событие "Event.CHANGE" или создавать для этого свои классы событий
По месту смотреть надо. Порой и вовсе без событий можно (нужно) обойтись. Ну, например, если у тебя в разных местах логики меняются, скажем, x, y и state. Если это, например, моделька юнита в игре про атаку клонов ) то тулить каждой вьюхе каждого отдельного юнита ТРИ события, которые меняют ее отображение ТРИ раза целиком (если это просто CHANGE, мы же не знаем, что поменялось) или по частям (если заморочиться и накатать таки CHANGE_X, CHANGE_Y, CHANGE_STATE), это не есть хорошо. Тут лучше и вовсе обойтись без событий. Достаточно просто каждой вьюхе отдельного юнита по своему ентерфрейму, или даже из одного родительского ентерфрейма в цикле вызывая метод redraw или update (или как там еще) у каждого юнита, перерисоваться ОДИН раз. Если нужно, можно даже инвалидаторы (так вроде называются) притулить в модель. Это такие булевы переменные, которые указывают, поменялось ли что-то с тех пор, как последний раз интересовались. Ну это если таки да нужно не делать холостых ходов. Например не годится постоянно менять отображение юнита на то же самое (это порой сопряжено с add/removeChild или переключением видимости и все такое).
__________________
Поймай яблоко 2!

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

Регистрация: Jan 2006
Адрес: Москва, Зеленоград
Сообщений: 653
Отправить сообщение для Babylon с помощью ICQ
Если модель меняется в контроллере, то по завершении изменения значения модели вьюшке передается измененное значение. Событие об изменении значения модели посылает обработчик из контроллера виду и вид меняется. А если модель подписана на события вьюшки, а вьюшка на события модели, то и контроллер не нужен.

Старый 16.10.2014, 12:49
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 3  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Babylon, классическую картинку про устройство MVC вообще никогда не видел что ли?
__________________
Поймай яблоко 2!

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

блогер
Регистрация: Mar 2007
Сообщений: 1,291
Записей в блоге: 5
Отправить сообщение для cleptoman с помощью ICQ
Бабилон, у вас каша, пардон..модель не слушает вьюшку...вьюшку слушает контроллер (в интерактивной части) и меняет модель..если контроллер меняет сам вьюшку по завершению изменения модели, то вам модель не нужна, следуя вашей же логике. скажу больше - не всегда эту самую модель меняет один контроллер. существуют всякие под контроллеры которые меняют разные части модели. процессоры, команды, поведенческие всякие стейты..и им не нужна всем вьюшка , которую они будут менять..они меняют состояние, а именно модель...а разные вьюхи ждут изменения модели ввиде событий от нее и обновляются..сами..в контексте заложенной в них логики отображения.
__________________
http://cleptoman.free-lance.ru
achivements: дважды благословлен на воровство. осеяный благодатью

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

блогер
Регистрация: Apr 2008
Адрес: SPb
Сообщений: 3,718
Записей в блоге: 5
Отправить сообщение для dark256 с помощью ICQ Отправить сообщение для dark256 с помощью Skype™
Неча на модель пенять, коли руки кривы ))
__________________
FLASHER.MAP SOUNDSTAGE / CS3 / AS2

Старый 16.10.2014, 13:10
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 6  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Лучше даже не говорить так: контроллер меняет модель. Строго говоря, модель — логическое ядро приложения, оно само там кипит/бурлит/меняется, о чем мы, как все уже понимают, узнаем из посылаемых событий и из всяких геттеров. Контроллер же просто дергает предоставленные моделью методы, через которые модель таким образом узнает, что там происходит в мире: може кто кнопочку "стрелять" нажал, или данные откуда-то с сервера прилетели, и т.д.
__________________
Поймай яблоко 2!

Старый 16.10.2014, 13:15
cleptoman вне форума Посмотреть профиль Отправить личное сообщение для cleptoman Найти все сообщения от cleptoman
  № 7  
Ответить с цитированием
cleptoman
 
Аватар для cleptoman

блогер
Регистрация: Mar 2007
Сообщений: 1,291
Записей в блоге: 5
Отправить сообщение для cleptoman с помощью ICQ
вот еще один кандидат в еретики )
__________________
http://cleptoman.free-lance.ru
achivements: дважды благословлен на воровство. осеяный благодатью

Старый 16.10.2014, 13:41
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 8  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Babylon, да, Вы все напутали. Контроллер вправе менять вью и модель напрямую. Вью меняется от событий модели. Вью сообщает событиями контроллеру о своих интерактивностях.

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

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

Регистрация: Jan 2006
Адрес: Москва, Зеленоград
Сообщений: 653
Отправить сообщение для Babylon с помощью ICQ
Zebestov я правильно понимаю, что в Вашем крайнем посте модель - это логика, вынесенная из контроллера. Я просто не сильно понимаю, зачем выносить её события из контроллера, если он есть? Пусть логика в нем и будет, а данные будут в виде пассивной модели.
cleptoman, чтобы вьюхи "сами" обновлялись в них должны быть хэндлеры, ловящие кастомные события. Но мы же не про вьюхи говорим.

Добавлено через 1 минуту
КорДум, я про это же и говорю.


Последний раз редактировалось Babylon; 16.10.2014 в 14:53.
Старый 16.10.2014, 15:32
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 10  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Цитата:
Сообщение от Babylon Посмотреть сообщение
Zebestov я правильно понимаю, что в Вашем крайнем посте модель - это логика, вынесенная из контроллера.
Скорее так: логика, не вынесенная из модели. Прямо какая-то невыносимая логика!
__________________
Поймай яблоко 2!

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

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

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


 


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


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