![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Lorem ipsum
|
Цитата:
хм. тоже не знаю почему )
__________________
Поймай яблоко 2! |
|
|||||
|
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
Не знаю, я у себя аналогичные задачи решаю через центральный контроллер, информацию которому доставляю через всплывающие события собственной структуры. Внутри - вся необходимая информация. Если все объекты созданы правильно, проблемы со всплытием нет.
Модальные окна, если это необходимо, прибиваю внизу. В момент обработки клика по кнопке и отправки наверх события. |
|
|||||
|
Регистрация: Jun 2007
Сообщений: 374
|
Методом проб и ошибок пришел к наиболее удобному для себя виду:
А в самом контроллере в функции openWindow: и всякие другие действия по открытию окна. По сути синглтон. Контролировать приложение намного проще, чем делать 100500 разных событий или явно передавать ссылку. UPD. И для попапов удобно делать методы типа show() и hide(). Поэтому конкретный попап можно открыть так: Последний раз редактировалось s8000_1; 04.07.2010 в 21:54. |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
жесть. и причем здесь тогда controller и view? такой подход это абсолютно не MVC.
лучше просто click="dispatchEvent(new WindowEvent(WindowEvent.OPEN,something))" //а в контроллере addEventListener(WindowEvent.OPEN,windowContainer_open); .. private function windowContainer_open(e:WindowEvent){ windowContainer.open(e.something)// хотя я бы назвал e.windowID } А в класс события WindowEvent можно добавить еще CLOSE, RESTORE,MAXIMIZE, MINIMIZE итп.. не плодя лишних классов
__________________
Отряд Котовскага Последний раз редактировалось Котяра; 04.07.2010 в 22:17. |
|
|||||
|
Регистрация: Jun 2007
Сообщений: 374
|
Насчет MVC. Я понимаю, что у каждого вьювера должен быть контроллер, подписывающий его на апдейты модели и управляющий моделями.
На практике порождается тонна лишнего кода, особенно для динамических вьюверов (нужно динамически создавать контроллеры, в них вьюверы, подписываться на кучу событий, удалять события и т. п.) Гораздо удобнее внутри вьювера автоматически подписать себя на апдейты любой модели через глобальные статические переменные и управлять моделями через глобальный контроллер. В вашем коде как минимум должен быть +1 контроллер, в котором присутствует ссылка на вьювер. Смысл создавать его? Только чтобы слепо следовать шаблону MVC? А что если вьювер не на сцене (ну там, окошко плавно исчезло, после того, как исчезло надо что-то сделать)? Тогда что, свой диспатчер писать? Задача переусложняется. Последний раз редактировалось s8000_1; 04.07.2010 в 22:25. |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
да причём тут это.. просто вьюшке нельзя знать о каком то глобальном синглтоне-контейнере ничего, на то она и вьюшка..
И контроллер обычно один и модель одна(хотя могут быть иерархические mvc), а вот вьюшек может быть сколько угодно.
__________________
Отряд Котовскага Последний раз редактировалось Котяра; 04.07.2010 в 22:25. |
|
|||||
|
Регистрация: Jun 2007
Сообщений: 374
|
Котяра, это в теории. На практике проблемы от того, что вьювер знает о чем-то глобальном, возникают в 1% случаев. Через статики управлять флэшкой проще, чем каждый вьювер извне подписывать, отписывать, создавать кучу кастомных событий типа BUTTON_SUBMIT (а это очередная связка - про событие знает и контроллер. и вьювер, в одном dispatch в другом addEventListener), передавать ссылку на модель для функции update и др.
В моем подходе кода меньше, логика более прозрачна. А уж как называть его MVC или BAD MVC без разницы. Автор спрашивал, как проще и удобнее, я ответил ![]() Последний раз редактировалось s8000_1; 04.07.2010 в 22:34. |
|
||||||
|
Цитата:
Цитата:
![]() Цитата:
Цитата:
Цитата:
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
Цитата:
click="AppGlobal.controller.openWindow(something) AppGlobal.view.windowContainer.open(something) а это соооооовсем не MVC. Цитата:
Писатель вьюшек должен знать о : AppGlobal.controller.openWindow(something) ? Не проще ли просто слать события опеделённого типа.. Подход через глобальные переменные - плохой подход и использование его должно иметь очень сильные оправдания.
__________________
Отряд Котовскага |
|
|||||
|
Регистрация: Jun 2007
Сообщений: 374
|
Котяра, я использую этот подход для UI, который в большинстве случаев пишет один человек полностью)
А для игрового процесса, с подгружаемыми персонажами на карту, например, правильное MVC, ибо внешняя swfка ничего и не может знать о родителе. |
![]() |
![]() |
Часовой пояс GMT +4, время: 12:10. |
|
|
« Предыдущая тема | Следующая тема » |
|
|