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

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

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

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,600
Записей в блоге: 17
Цитата:
2) Можно написать отдельный контроллер модели, который работает с соединением и помещает приходящие данные в модель.
dimarik говорит что когда контроллер слушает модель - нонсенс, но ведь не через вьюшку сообщать контроллеру данные от модели...

Вообще имеется проект с множеством подзон (курилка, сама игра, лобби и т.д.), и всем нужно иметь связь с сервером. Очевидно, что если и заводить одну модель, которую отдавать всем созданным контроллерам на прослушивание - нелогично, логичней отдавать ссылку на коннектор к серверу. Вообще как поступить?

Из самых "трезвых решений" в голове - как раз передавать контроллерам ссылку на коннектор, который испускал бы события по типам - LobbyEvent, GameEvent и т.д., соответственно каждая часть игры ловила бы только свои события. Но не знаю, насколько это правильно.

Старый 27.09.2010, 21:28
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 152  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
dimarik говорит что когда контроллер слушает модель - нонсенс, но ведь не через вьюшку сообщать контроллеру данные от модели...
Непонятно только, как это относится к указанной цитате.


Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
Вообще имеется проект с множеством подзон (курилка, сама игра, лобби и т.д.), и всем нужно иметь связь с сервером. Очевидно, что если и заводить одну модель, которую отдавать всем созданным контроллерам на прослушивание - нелогично, логичней отдавать ссылку на коннектор к серверу. Вообще как поступить?
Не на коннектор, а на основной контроллер, у которого можно подписаться на события/команды от сервера (они проходят сквозь него после обработки основным контроллером). Коннектор передать нельзя, т. к. клиент у него один — основной контроллер.

Старый 27.09.2010, 21:43
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 153  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,600
Записей в блоге: 17
Цитата:
Непонятно только, как это относится к указанной цитате.
Буфер обмена меня подвёл =)
Цитата:
Контроллер потенциально может слушать модель, т. к. он не единственный контроллер, который может её изменять.
Подумал. Димарик, наверно, имел ввиду что общаться с собственной моделью, на которую никто другой не подписан?

Цитата:
Не на коннектор, а на основной контроллер, у которого можно подписаться на события/команды от сервера (они проходят сквозь него после обработки основным контроллером). Коннектор передать нельзя, т. к. клиент у него один — основной контроллер.
То есть основной контроллер имеет логику парсинга сообщений от сервера до вида более менее удобном для дочерних контроллеров, после чего эти данные диспачатся от его имени - и кто успел, тот и съел?
Тогда:
1) Верно ли утверждение выше?
2) Насколько глубоко нужно делать парсинг? Прямо разжевать до вкуснятины, или достаточно минимальных действий - например, удалить служебную информацию у пакета (вроде его длины).
3)
Цитата:
Не на коннектор, а на основной контроллер, у которого можно подписаться на события/команды от сервера (они проходят сквозь него после обработки основным контроллером).
(они проходят сквозь него после обработки основным контроллером) - сквозь что они проходят после обработки основным контроллером? Имеется ввиду конечный слушатель?

Цитата:
Коннектор передать нельзя, т. к. клиент у него один — основной контроллер.
Не совсем понял что ты подразумеваешь под клиентом. Коннектор делается паттерном?
Как вижу я - коннектор после парсинга сообщения и определения принадлежности шлёт событие, если клиент - это слушатель этого события то не вижу преград подписать на него другие классы.

Старый 27.09.2010, 22:29
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 154  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
Подумал. Димарик, наверно, имел ввиду что общаться с собственной моделью, на которую никто другой не подписан?
Скорее эта модель более старшая по отношению к контроллеру.


Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
То есть основной контроллер имеет логику парсинга сообщений от сервера до вида более менее удобном для дочерних контроллеров, после чего эти данные диспачатся от его имени - и кто успел, тот и съел?
Тогда:
1) Верно ли утверждение выше?
2) Насколько глубоко нужно делать парсинг? Прямо разжевать до вкуснятины, или достаточно минимальных действий - например, удалить служебную информацию у пакета (вроде его длины).
3)
(они проходят сквозь него после обработки основным контроллером) - сквозь что они проходят после обработки основным контроллером? Имеется ввиду конечный слушатель?
1) Нет;
2) Парсинг происходит в коннекторе, на выходе получается команда с аргументами;
3) После вызова метода с именем команды, например. Аргументы метода сохраняются для дальнейшей обработки другими контроллерами.



Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
Не совсем понял что ты подразумеваешь под клиентом. Коннектор делается паттерном?
Как вижу я - коннектор после парсинга сообщения и определения принадлежности шлёт событие, если клиент - это слушатель этого события то не вижу преград подписать на него другие классы.
На манер LocalConnection#client/NetConnection#client. Без всяких событий.

Старый 27.09.2010, 22:35
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 155  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,600
Записей в блоге: 17
Арм... То есть самый главный контроллер, получает команду от коннектора с аргументами и дёргает соответствующие методы у дочерних контроллеров?

Как это реализуется? Динамическим доступом? Был бы очень рад минималистическому примеру :-[

Старый 27.09.2010, 22:43
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 156  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
Арм... То есть самый главный контроллер, получает команду от коннектора с аргументами и дёргает соответствующие методы у дочерних контроллеров?

Как это реализуется? Динамическим доступом? Был бы очень рад минималистическому примеру :-[
Ничего он не дергает, он передает событие с привязанной командой всем желающим. Имя события составное, например command_enterAccount, где enterAccount — имя команды, он же метод основного контроллера (если есть).

Старый 27.09.2010, 22:57
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 157  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,600
Записей в блоге: 17
Так, проясняется.
Сюжет: пришло событие, что человек вошел на аккаунт. Коннектор распарсил его и сообщил как то это главному контроллеру (как? Событием?). Главный контроллер выстрелил событие, содержащее команду, которую подхватили все подписчики на это событие и начали делать то, что им следует делать.

Старый 27.09.2010, 23:02
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 158  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
Так, проясняется.
Сюжет: пришло событие, что человек вошел на аккаунт. Коннектор распарсил его и сообщил как то это главному контроллеру (как? Событием?). Главный контроллер выстрелил событие, содержащее команду, которую подхватили все подписчики на это событие и начали делать то, что им следует делать.
Ещё раз стоит прочитать пост #156, особенно последнее предложение.

Старый 27.09.2010, 23:08
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 159  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,600
Записей в блоге: 17
Да, клиентом, здорово. То есть вызываем паблик метод, хорошо.
А как обращаться к коннектору от маленьких контроллеров? Ссылку на главный контроллер я тяну к дочерним, но тоже большим (например чтобы сказать главному контроллеру что действие закончилось, меняй курилку на игру), поэтому напрямую вызываю метод у главного контроллера, он дёргает коннектор.

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


Последний раз редактировалось Psycho Tiger; 27.09.2010 в 23:22.
Старый 27.09.2010, 23:20
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 160  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
Да, клиентом, здорово. То есть вызываем паблик метод, хорошо.
А как обращаться к коннектору от маленьких контроллеров?
Подписаться на событие типа CommandEvent, у которого будет ссылка на пришедшую команду.

Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
Ссылку на главный контроллер я тяну к дочерним, но тоже большим (например чтобы сказать главному контроллеру что действие закончилось, меняй курилку на игру), поэтому напрямую вызываю метод у главного контроллера, он дёргает коннектор.
Можно и так, а можно оформить методом call, в котором первым аргументом идет имя отправляемой на сервер команды. Вариантов полно.

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

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

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


 


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


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