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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 09.11.2012, 00:45
Dukobpa3 вне форума Посмотреть профиль Отправить личное сообщение для Dukobpa3 Найти все сообщения от Dukobpa3
  № 481  
Ответить с цитированием
Dukobpa3
 
Аватар для Dukobpa3

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
И в модели изначально должны быть те данные которые влияют на состояние системы. То что мы должны будем восстановить при перезапуске допустим, или же закрыв и открыв окно.
Вьюха удаляется, но потом восстанавливает нужную картинку по данным из модели.

Так вот если это допустим текущая страница в магазине, скорее всего ее хранить нигде не надо, и можно листать страницы не сохраняя индекс страницы в модель. Ну и в таком духе.

Добавлено через 4 минуты
Цитата:
Можно тут объяснить?
Так че тут обьяснять. Должно быть четкое разделение прав и обязанностей между контроллером моделью и вьюхой.

Модель - логика и математика и данные. Она всё считает.
Вью - красивая, но тупая, умеет только рисоваться согласно данным в модели. При чем на одной модели может висеть несколько разных вьюх. Например есть профиль пользователя, это модель. А у него три вьюхи - инвентарь, кукла персонажа в бою, оконо распределения скилов.

А контроллер
случает события из вьхи.
может каким-либо методом общаться с другими контроллерами
при получении сообщения из вью или другого контроллера - поменять некие данные в модели.

При этом всём вью постоянно слушает модель на предмет изменений и перерисовывается, поддерживаяч картинку в актуальном состоянии.

И вот чтоб вью слишком часто не рисовалась наша задача подумать как и что должна диспатчить модель и как часто.

Ну это мое видение мвц. С ним некоторые наверное не согласятся. А спорить я не хочу.

Добавлено через 6 минут
И да, контроллер это чисто как связующее звено. Он сам решений не принимает. Все таймера и периодические события возникают в моделях, либо же во вью - если это не требует выхода наружу (ну типа локально во вью подписались на энтерфрейм, но ольше никто об этой подписке не знает и не должен. Если должен - то лучше крутить что-то в модель, пусть она рендер дергает.)
__________________
Кто к нам с чем для чего - тот у нас того от того.

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

Регистрация: Jul 2008
Сообщений: 912
Цитата:
Сообщение от Dukobpa3 Посмотреть сообщение
* Во-вторых что энтерфрейм делает в контроллере.
Об этом ничего не написано, почему-то посчитал, что ентерфрейм должен быть в контроллере, но раз уж он в вьюхе, тогда _view.updateSquares(); не потребуется.

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

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
Контроллер не может быть инициатором никакого действия.
Инициатор всегда либо модель если это данные с сервера новые, либо что-то периодическое типа таймера. Либо же вью - если это какое-то действие пользователя.

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

Так вот исходя из этого - никакая логика не может допустить наличие энтерфейма в контроллере, ибо в таком случае он станет инициатором какого-то непотребства.

Добавлено через 3 минуты
Нужно изначально понять саму идею разделения ролей на М В Ц. Тогда путаницы не будет.
Когда четко осознаешь обязанности каждого - половина вопросов сами отпадут.
__________________
Кто к нам с чем для чего - тот у нас того от того.

Старый 09.11.2012, 01:02
Sintesis вне форума Посмотреть профиль Отправить личное сообщение для Sintesis Найти все сообщения от Sintesis
  № 484  
Ответить с цитированием
Sintesis
 
Аватар для Sintesis

Регистрация: Jul 2008
Сообщений: 912
Цитата:
Сообщение от Dukobpa3 Посмотреть сообщение
Добавлено через 6 минут
И да, контроллер это чисто как связующее звено. Он сам решений не принимает. Все таймера и периодические события возникают в моделях, либо же во вью - если это не требует выхода наружу (ну типа локально во вью подписались на энтерфрейм, но ольше никто об этой подписке не знает и не должен. Если должен - то лучше крутить что-то в модель, пусть она рендер дергает.)
Ага, ну вот так вот уже понятней, первые посты немного в заблуждения вводят. Ещё стрелочка на рисунке от контроллера к вьюхе вводит в заблуждение, кажется буд-то контроллер может делать с вьюхой что хочет.

Старый 09.11.2012, 01:04
Dukobpa3 вне форума Посмотреть профиль Отправить личное сообщение для Dukobpa3 Найти все сообщения от Dukobpa3
  № 485  
Ответить с цитированием
Dukobpa3
 
Аватар для Dukobpa3

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
Он имеет ссылку на вью, но это не значит что он может делать с ней всё что хочет. Ему ссылка нужна банально для того чтобы подписаться на события. В идеале этим нужно ограничиться.
__________________
Кто к нам с чем для чего - тот у нас того от того.

Старый 09.11.2012, 01:06
Sintesis вне форума Посмотреть профиль Отправить личное сообщение для Sintesis Найти все сообщения от Sintesis
  № 486  
Ответить с цитированием
Sintesis
 
Аватар для Sintesis

Регистрация: Jul 2008
Сообщений: 912
Вот что пишет ПсихоТайгер
Цитата:
C - Controller. Контроллер. Он занимается логикой всей триады. Именно он обрабатывает нажатие клавиш и меняет данные в модели, записывая туда новые координаты игрока. Именно он разрешает игроку стрелять и меняет у него оружие.
Вот цитата с твоего поста:
Цитата:
Контроллер не может быть инициатором никакого действия.
Инициатор всегда либо модель если это данные с сервера новые, либо что-то периодическое типа таймера. Либо же вью - если это какое-то действие пользователя.
Что-то не сходится, если контроллер обрабатывает "нажатие клавиш" то как он "не может быть инициатором никакого действия"?

Старый 09.11.2012, 01:11
Dukobpa3 вне форума Посмотреть профиль Отправить личное сообщение для Dukobpa3 Найти все сообщения от Dukobpa3
  № 487  
Ответить с цитированием
Dukobpa3
 
Аватар для Dukobpa3

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
Я не считаю что тигер был прав.
Он в этих суждениях допускает стандартную ошибку всех начинающих работать по мвц - думает что контроллер всему голова, а модель - тупо набор данных.
Это не так. Логика в модели. А контроллер может ей сказать: Ану-ка подруга, обнови-ка свои данные об вот этом вот контакте. И она обновит, а вьюшка увидит и нарисует этот контакт.

Но не так что контроллер говорит: модель, вот этот контакт заблокировать, поставить ему аватару вот такую, и поставить ему друзей вот таких вот. Модель сама знает откуда информацию черпать. Контроллер манагерит чисто на уровне команд.
__________________
Кто к нам с чем для чего - тот у нас того от того.

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

Регистрация: Jul 2008
Сообщений: 912
Цитата:
Сообщение от Dukobpa3 Посмотреть сообщение
думает что контроллер всему голова, а модель - тупо набор данных.
Жесть, да там всю статью об этом говориться, что контроллер всему голова и etc это подтверждает, а тут вдруг оказывается... Где истина?
Контроллер что и клавиши не слушает? Чем он вообще будет заниматься если приложение не серверное?

Старый 09.11.2012, 01:25
Dukobpa3 вне форума Посмотреть профиль Отправить личное сообщение для Dukobpa3 Найти все сообщения от Dukobpa3
  № 489  
Ответить с цитированием
Dukobpa3
 
Аватар для Dukobpa3

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
in vino veritas

Я таки рекомендовал бы прочесть весь этот флуд 50 страниц. Тут много умного и вариантов так же много. Я свое видение высказал. И я к нему шел два года, раньше тоже контроллер мозгами был, а модель просто набором данных. Но за два года я таки понял что удобнее логику в модели хранить. Гораздо удобнее.
Удобнее это значит: требуется меньше кода, меньше времени, меньше усилий на поддержку.

Добавлено через 6 минут
И что самое крутое: роли таки получаются четко разделены. МОдель перестает быть тупой пачкой геттеров-сеттеров и начинает выполнять какие-то функции. И контроллер не раздувается до вселенских неконтролируемых масштабов.
__________________
Кто к нам с чем для чего - тот у нас того от того.

Старый 09.11.2012, 01:34
Sintesis вне форума Посмотреть профиль Отправить личное сообщение для Sintesis Найти все сообщения от Sintesis
  № 490  
Ответить с цитированием
Sintesis
 
Аватар для Sintesis

Регистрация: Jul 2008
Сообщений: 912
У тебя много противоречий например ты говоришь:
Цитата:
* Во-перых какие это данные в моделях должны с частотой раз в кадр меняться?
имеешь в виду, что никакие данные не меняются в модели 30 раз в секунду.
а дальше
Цитата:
Все таймера и периодические события возникают в моделях
данные меняются 30 раз в секунду только в модели.
What? Я так не могу...

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

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

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


 


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


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