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

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

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

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
Цитата:
Но методы вьюхи контроллер может же вызывать? В примере ПсихоТайгера например: _view.updateSquares(); вызывается в контроллере. Или ты имеешь ввиду, что глубже заходить нельзя, например вот так
_view.updateSquares().someElse; ?
_view.updateSquares(); - это уже плохо. Только ивентами, но иногда не гнушаюсь и сам дернуть какой-то паблик метод вьюхи, хотя и очень стараюсь избегать. Я предпочту поменять что-то в модели чтоб вьюха увидела изменения и просто перерисовалась.
А то что вьюха постоянно слушает модель на предмет изменений и согласно этому рендерится вроде как вопросов вызывать не должно?
__________________
Кто к нам с чем для чего - тот у нас того от того.

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

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

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

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

Добавлено через 2 минуты
* Во-перых какие это данные в моделях должны с частотой раз в кадр меняться?
* Во-вторых что энтерфрейм делает в контроллере.
* В третьих кто сказал что рендер во вьюхе должен быть целиком - получил маяк - целиком перерисовалась.

Из модели шлются микросообщения: "поменялось такое вот данное" а вьюха меняет "такое вот поле". Одно поле, а не вся перерисовывается.
__________________
Кто к нам с чем для чего - тот у нас того от того.

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

Регистрация: Jul 2008
Сообщений: 912
Цитата:
Сообщение от Dukobpa3 Посмотреть сообщение
Тебе на первую страницу и читать сначала в таком случае....
Да не, толку не будет, потому, что мне в глаза сразу бросается _view.updateSquares(); который всё это решает. Можно тут объяснить?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


 


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


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