![]() |
|
|
|
|||||
Регистрация: Jan 2013
Сообщений: 126
|
![]() Привет.
Создаю на Эйр небольшое приложение для телефона. Думаю все таки понять суть и создать свой кастомный MVC. До этого имел дело с PureMVC, Robotlegs, SomaFramework и т.д. Давно привык использовать готовые фреймворки, чем изобретать свой велик. В общем, прочитав несколько статеек про MVC, вроде все ясно var model:Model = new Model(); var controller:Controller = new Controller(model); var view:View = new View(model, controller); addChild(view); Пример - создаю отдельный класс вью для фонового рисунка, возможно в будущем фон будет плавно меняться на другой рисунок. Для фонового класса создал модель и контроллер. Контроллер слушает главную модель приложения (ассетслоадер), после успешной загрузки изменяет свою модель, вьюшка в свою очередь добавляет на сцену. Не знаю, правильно ли это. Таких классов может быть много. И плодить по несколько сотен new для каждой вьюшки, модели, контроллера, как то накладно. Буду очень благодарен за любые советы. Последний раз редактировалось namespaces; 24.02.2016 в 03:21. |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Бэкграунд является Данными приложения? Как говорится, нафига козе модель.
Добавлено через 2 часа 15 минут Такой подход, действительно, распространен — когда "любое изменение на экране должно инициироваться Моделью". Но это вовсе не значит, что он хорош и обязателен. Это избыточность архитектуры. Модель должна заниматься данными: хранить их и обрабатывать, производить вычисления и осуществлять логику Приложения. Если изменение фоновой картинки никак не влияет на логику приложения и его данные, оно никак не связано с Моделью. Ваше затруднение возникает из-за того, что Вы абстрагируете фоновую картинку в отдельную самостоятельную триаду MVC, создавая таким образом отдельное самостоятельное приложение "Меняющийся фон". В рамках этого приложения всё законно, есть модель, хранящая данные о всех картинках, текущей картинке, и вычисляющая следующую картинку и момент изменения, и посылающая событие для Вью. Вопрос только в том, нужна ли эта триада "главному" MVC Приложения, или может прекрасно существовать в его Вью. Ведь всё, чем "Меняющийся фон" занимается, имеет отношение только к Вью и никак не меняет данные самого Приложения. Если завтра Вы захотите поставить на фон видеоролик, или скриптованую 3D-сценку, это никак не отразится на логике Приложения. Это вопрос только отображения, и им должна заниматься Вью. Для того Вью и отделяли от Модели, чтобы совершенно свободно менять варианты отображения, не внося никаких изменений в логику. Ну а после того, как Вы согласитесь, что место этой штуке — во Вью, скорее всего отпадет и необходимость оформлять ее как MVC: контроллеру там нечего контролировать, нет никакой интерактивности; нет Данных и логики, которые был бы смысл защитить в Модели. Есть только Вью со СКРИПТОМ, или, как говорили раньше, сценарием. Простым самодостаточным сценарием, независящим ни от чего. Даже если смена картинки подразумевается не по таймеру, а при переходе Приложения к другому "разделу" или "состоянию", то это изменение является глобальным для всего Вью и должно инициироваться из Вью. То есть Вью получает от Модели событие смены Состояния, а смена картинки является частью реакции Вью.
__________________
Reality.getBounds(this); |
|
|||||
Регистрация: Jan 2013
Сообщений: 126
|
Цитата:
Насчет бекграунда скорее всего так и сделаю. Это просто был пример. Представим, что приложение имеет подключение к базе данных, читает конфиг файл и для сохранения состоянии (сессии) записывает данные в Sharedobject. А также несколько окошек, игровую сцену, звуки и т.д. Окошки в виде уведомлений могут всплывать в разное время, если отсутствует подключение или проблемы с базой данных, то вместо ошибки молча записывать-читать с локального файла. Вопрос лишь в том, как Вид слушает ответ от 5 моделей? Какая роль у контроллера? Кто добавляет этих окошек на сцену? |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
Цитата:
Цитата:
Цитата:
__________________
Reality.getBounds(this); |
|
|||||
Регистрация: Jan 2013
Сообщений: 126
|
Теперь все стало понятно, разложили все по полочкам. Спасибо за помощь.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 14:16. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|