Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   MVC hello world (http://www.flasher.ru/forum/showthread.php?t=139373)

Vier 29.04.2010 12:48

MVC hello world
 
Прочитал в поиске несколько тем про mvc, но как-то до конца не понял некоторые моменты.
Если форуму не лень, объясните еще раз.

Хочу сделать менюшку. Данные с ее настройками кнопок меню (картинки, координаты) лежат в xml.
Правильней парсить xml в моделе или лучше это сделать в контроллере и потом передать в модель?
Все ли события надо прогонять через контроллер? То есть, если во view в конструкторе передается модель, как будет происходить события выбора менюшки?
Ловлю клик во view, меняюиз view в моделе номер выбранной менюшки, после чего модель диспатчит событие о том что она изменилась, это событие ловит контроллер и запускает, ну например, анимацию во view? Это правильный расклад?

Obi 29.04.2010 13:24

Да не зацикливайтесь вы на канонической реализации mvc, делайте как вам удобнее :) Паттерны призваны упростить жизнь, а не усложнить. Для одной менюшки я бы вообще не стал писать mvc реализацию, оно того не стоит.
Смотришь чужой код, а одна кнопка занимает 15 классов, хотя должна занимать 15 строк.

Vier 29.04.2010 14:00

Да нет, менюшка эта, как пример. Mvc мне нужен не ради mvc, просто несколько классов в моей программке превратилось в огромную свалку логики, лиснеров и спрайтов ) И пришло время их отрефакторить.

udaaff 29.04.2010 17:13

http://www.flasher.ru/forum/showthread.php?t=131588
http://www.flasher.ru/forum/showthread.php?t=138349

Psycho Tiger 29.04.2010 20:56

Цитата:

Все ли события надо прогонять через контроллер? То есть, если во view в конструкторе передается модель, как будет происходить события выбора менюшки?
Ловлю клик во view, меняюиз view в моделе номер выбранной менюшки, после чего модель диспатчит событие о том что она изменилась, это событие ловит контроллер и запускает, ну например, анимацию во view? Это правильный расклад?
Нет. Происходит клик на view. View диспатчит событие о том, что был клик, это ловит контроллер, думает что с этим сделать и меняет модель, если считает нужным. Модель меняется и диспатчит событие о том, что изменилась, это ловит view и изменяет свой вид.

Vier 30.04.2010 13:00

Psycho Tiger, спасибо. А как правильней контроллеру подписываться на события из view? Создавать спрайты с кнопками в контроллере вешать на них лиснеры и передавать во view, или повесить лиснеры целиком на вью? Или по-ситуации?

Obi 30.04.2010 13:36

Вью и должен диспатчить что нужно. Если вы хотите поймать событие Click, вешайте на вью слушатель Click, можно создавать свои события и пользоваться бабблингом.

Psycho Tiger 30.04.2010 14:53

Цитата:

Сообщение от Vier (Сообщение 905011)
Psycho Tiger, спасибо. А как правильней контроллеру подписываться на события из view? Создавать спрайты с кнопками в контроллере вешать на них лиснеры и передавать во view, или повесить лиснеры целиком на вью? Или по-ситуации?

Контроллер не должен ничего создавать во вьюшке.
Контроллер подписывается на события от view, на мой взгляд лучше всего чтобы он не подписывался на события от view.mySprite, к примеру. Потому что тогда вьюшка обязательна должна иметь этот самый mySprite, что не айс. Можно либо диспатчить одно кастомное событие, которое содержит всю информацию о произошедшем, либо подписываться на много событий.


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

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