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

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

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Что лично мне не нравится в событиях от Вью к Контроллеру?
Это вобщем-то отлично, когда ничего кроме типа События не требуется.
Но как только возникает ситуация, когда необходимо передавать данные, весь смысл меняется.
Становятся необходимы особые кастомные классы Событий-контейнеров данных. Эти классы должны знать (то есть иметь с ними жесткую связанность) и Вью и Контроллер. Я уже как-то "наезжал" на такую же проблему с событиями от Модели к Вью, и здесь ситуация ничем не лучше. Разруливать ее с помощью неких "интерфейсов событий" имхо маразм, особенно когда напрягает само количество новых классов-Событий, каждый из которых нужен для поддержки одного единственного действия юзера во Вью/изменения данных в Модели — так к каждому еще и Интерфейс заводить?
Я к тому, что в ситуации неявной жесткой связанности через события говорить об идеалах независимости фигурантов MVC довольно лицемерно, а учитывая сильную физическую/логическую связь между Вью и Контроллером (второй, по сути, придаток Вью), я лично вполне допускаю схему с прямой ссылкой и прямым вызовом методов контроллера из вью-хозяина. "Передать массив" в такой ситуации не потребует ни нового Класса События, ни Интерфейса для него, а связанность, по сути, та же самая. Реальную независимость имеет только Модель, и ей ничто не угрожает.
__________________
Reality.getBounds(this);

Старый 05.11.2013, 15:52
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 2  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Если вместо контроллера использовать PM (Presentation Model)
То именно так там и делается.
http://www.martinfowler.com/eaaDev/P...tionModel.html
http://blogs.adobe.com/paulw/archive...tion_pa_3.html
http://examples.pmwilliams.co.uk/ado...iew/index.html
http://examples.pmwilliams.co.uk/ado...ss-diagram.jpg
__________________
Отряд Котовскага

Старый 01.02.2014, 04:02
lammer.Ok вне форума Посмотреть профиль Отправить личное сообщение для lammer.Ok Найти все сообщения от lammer.Ok
  № 3  
Ответить с цитированием
lammer.Ok

Регистрация: Nov 2012
Сообщений: 55
Подскажите и мне в вопросе. При загрузке программы, кто грузит все необходимые картинки и тд. для UI? Например, у меня готовится редактор, и мне необходимо подготовить и загрузить много картинок для тулбара. Кто этим занимается из mvc или эту функцию выполняет совершенно левый класс, какой-нибудь UILoader ?

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

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

Менеджмент ресурсов так же не входит и в задачи контроллера.

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

Старый 01.02.2014, 22:52
lammer.Ok вне форума Посмотреть профиль Отправить личное сообщение для lammer.Ok Найти все сообщения от lammer.Ok
  № 5  
Ответить с цитированием
lammer.Ok

Регистрация: Nov 2012
Сообщений: 55
Спасибо, так и предполагал.
Не поможете ещё с вопросом, допустим есть небольшое приложение-конструктор, которое состоит:

1) Главное меню, содержит кнопку, при помощи которой очищается рабочая область.
2) Рабочая область, где можно создавать квадраты залитые цветом.
3) Тулбар, где есть 2 кнопки "создание" и "удаление" квадрата на рабочей области. Когда нажата любая из кнопок курсором можно создать или выбрать и удалить квадрат, кликнув по нему.

Сразу скажу опыта с mvc практически нет. Хочу сделать для начала просто, но относительно грамотно.
Планирую так подать это дело в mvc:

1) При загрузке программы Контроллер создаёт Модель и Вьюшку.
2) Вьюшка подготавливает и создаёт внешний вид программы. Устанавливает событие "клик" на кнопку в главном меню и на все кнопки тулбара.
3) Контроллер ловит "клик", когда пользователь нажал на кнопку и определяет, что клик пришёл, допустим с главного меню(или Модель должна определять это?). Записывает в Модели флажок о том, что можно очищать рабочую область.
4) Модель оповещает Вьюшку о изменении в главном меню.
5) Вьюшка проверяет у Модели этот флажок и очищает рабочую область.

Правильно ли я описал до этого пункта?
Далее не знаю как взаимодействовать тулбару и рабочей области. Как например выбрать инструмент "перетаскивания" и передвинуть квадрат. Одно знаю точно у квадрата должна быть своя модель, вьюшка и контроллер? Не подскажите как поступить?


Последний раз редактировалось lammer.Ok; 01.02.2014 в 23:07.
Старый 02.02.2014, 03:50
Dukobpa3 вне форума Посмотреть профиль Отправить личное сообщение для Dukobpa3 Найти все сообщения от Dukobpa3
  № 6  
Ответить с цитированием
Dukobpa3
 
Аватар для Dukobpa3

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

Вполне возможно, и я бы наверное так и сделал:
- вью тулбара, вью рабочей области - это разные вью
- соответственно и модели у них тоже разные.
- в модели рабочей области есть массив моделей ректанглов. Во вью рабочей области есть массив вью ректанглов.
- контроллер у них может быть один общий, а могут быть тоже разные но тогда надо будет подумать о каком-то механизме общения между контроллерами. Т.е. клик на кнопку в тулбаре свистит в контроллер тулбара, контроллер тулбара каким-то образом сообщает єто контроллеру рабочей области, тот в свою очередь меняет модель рабочей области.

Как взаимодействовать тулбару и рабочей области вы описали вроде.
Вью тулбара маячит контроллеру о попытке изменений. Контроллер тулбара меняет текущий режим в модели, в этот момент там пачка проверок в модели, можно лди режим поменячть и в таком духе. Согласно нового режима(если поменялся) меняется визуально статус кнопки и состояние рабочей области (курсор например визуально меняется, подписки на клик по ректанглу меняются и в таком духе).

Тут может будет для вас что-то интересное:
рас
два
__________________
Кто к нам с чем для чего - тот у нас того от того.

Старый 03.02.2014, 04:26
lammer.Ok вне форума Посмотреть профиль Отправить личное сообщение для lammer.Ok Найти все сообщения от lammer.Ok
  № 7  
Ответить с цитированием
lammer.Ok

Регистрация: Nov 2012
Сообщений: 55
Спасибо большое. Оказываете неоценимую помощь. Очень интересный этот mvc)
Ещё пару уточнений:

1) Если мы создаём отдельные вьюхи для тулбара и раб. обл., тогда главная вьюшка лишь строит интрефейс программы и устанавливает обработчики нажатия мыши только на главное меню. То есть главными моделью, контроллером и вьюшкой управляется как бы вся программа через главное меню(создание нового документа, выход из программы и тд. глобальные вещи)?

2) На сколько я понимаю главная вьюшка создаёт дочерние mv(c) для тулбара и р. области. А вьюшка рабочей области создаёт mv(с) для ректангла?

3) Среди контроллеров может быть прямая связь без подписок между собой?

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

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

Старый 04.02.2014, 17:35
lammer.Ok вне форума Посмотреть профиль Отправить личное сообщение для lammer.Ok Найти все сообщения от lammer.Ok
  № 9  
Ответить с цитированием
lammer.Ok

Регистрация: Nov 2012
Сообщений: 55
Dukobpa3, большое спасибо за ответы, разобрался на данный момент со своими непонятками.

Старый 08.02.2014, 19:47
lammer.Ok вне форума Посмотреть профиль Отправить личное сообщение для lammer.Ok Найти все сообщения от lammer.Ok
  № 10  
Ответить с цитированием
lammer.Ok

Регистрация: Nov 2012
Сообщений: 55
Появилась небольшая загвоздка в структуре построения дочерних mv.
В этой теме прочитал, что контроллеры создают контроллеры, модели — модели, а вьюшки — вьюшки. Получается, что главные MVC создают основные mvc всего приложения и хранят ссылки на них? Если к примеру, взять тулбар из моего приложения, в главной модели создаётся дочерняя модель тулбара, в главной вьюшке - дочерняя вьюшка тулбара, а в главном контроллере создастся дочерний контроллер тулбара, который свяжет модель и вьюшку тулбара, запросив ссылки на них через родительские MV, типа Model.models.toolbar? В этом собственно и вопрос, правильно ли я понимаю?

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

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

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


 


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


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