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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 04.07.2010, 02:10
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 11  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Цитата:
Сообщение от i.o. Посмотреть сообщение
Если я правильно понял, то у компонента есть свойство window. Можно просто добавить свойство windowContainer в window.
у компонента сейчас нет свойства window

Цитата:
Сообщение от Скрипун Посмотреть сообщение
не знаю почему, но таких задач что-то не возникало, как у автора топика
хм. тоже не знаю почему )
__________________
Поймай яблоко 2!

Старый 04.07.2010, 21:45
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 12  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
Не знаю, я у себя аналогичные задачи решаю через центральный контроллер, информацию которому доставляю через всплывающие события собственной структуры. Внутри - вся необходимая информация. Если все объекты созданы правильно, проблемы со всплытием нет.

Модальные окна, если это необходимо, прибиваю внизу. В момент обработки клика по кнопке и отправки наверх события.

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

Регистрация: Jun 2007
Сообщений: 374
Методом проб и ошибок пришел к наиболее удобному для себя виду:

Код AS3:
click="AppGlobal.controller.openWindow(something)"
А в самом контроллере в функции openWindow:
Код AS3:
AppGlobal.view.windowContainer.open(something)
и всякие другие действия по открытию окна.

По сути синглтон. Контролировать приложение намного проще, чем делать 100500 разных событий или явно передавать ссылку.

UPD. И для попапов удобно делать методы типа show() и hide(). Поэтому конкретный попап можно открыть так:
Код AS3:
var popUp = new TitleWindow();
popUp.show()


Последний раз редактировалось s8000_1; 04.07.2010 в 21:54.
Старый 04.07.2010, 22:06
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 14  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
жесть. и причем здесь тогда controller и view? такой подход это абсолютно не MVC.
лучше просто
Код AS3:
click="dispatchEvent(new WindowEvent(WindowEvent.OPEN,something))"
//а в контроллере
addEventListener(WindowEvent.OPEN,windowContainer_open);
..
private function windowContainer_open(e:WindowEvent){
windowContainer.open(e.something)// хотя я бы назвал e.windowID
}
и не надо 100500 событий - достаточно одного с разными параметрами..
А в класс события WindowEvent можно добавить еще CLOSE, RESTORE,MAXIMIZE, MINIMIZE итп.. не плодя лишних классов
__________________
Отряд Котовскага


Последний раз редактировалось Котяра; 04.07.2010 в 22:17.
Старый 04.07.2010, 22:15
s8000_1 вне форума Посмотреть профиль Отправить личное сообщение для s8000_1 Найти все сообщения от s8000_1
  № 15  
Ответить с цитированием
s8000_1
 
Аватар для s8000_1

Регистрация: Jun 2007
Сообщений: 374
Насчет MVC. Я понимаю, что у каждого вьювера должен быть контроллер, подписывающий его на апдейты модели и управляющий моделями.
На практике порождается тонна лишнего кода, особенно для динамических вьюверов (нужно динамически создавать контроллеры, в них вьюверы, подписываться на кучу событий, удалять события и т. п.)

Гораздо удобнее внутри вьювера автоматически подписать себя на апдейты любой модели через глобальные статические переменные и управлять моделями через глобальный контроллер.

В вашем коде как минимум должен быть +1 контроллер, в котором присутствует ссылка на вьювер. Смысл создавать его? Только чтобы слепо следовать шаблону MVC?
А что если вьювер не на сцене (ну там, окошко плавно исчезло, после того, как исчезло надо что-то сделать)? Тогда что, свой диспатчер писать? Задача переусложняется.


Последний раз редактировалось s8000_1; 04.07.2010 в 22:25.
Старый 04.07.2010, 22:23
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 16  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
да причём тут это.. просто вьюшке нельзя знать о каком то глобальном синглтоне-контейнере ничего, на то она и вьюшка..
И контроллер обычно один и модель одна(хотя могут быть иерархические mvc), а вот вьюшек может быть сколько угодно.
__________________
Отряд Котовскага


Последний раз редактировалось Котяра; 04.07.2010 в 22:25.
Старый 04.07.2010, 22:30
s8000_1 вне форума Посмотреть профиль Отправить личное сообщение для s8000_1 Найти все сообщения от s8000_1
  № 17  
Ответить с цитированием
s8000_1
 
Аватар для s8000_1

Регистрация: Jun 2007
Сообщений: 374
Котяра, это в теории. На практике проблемы от того, что вьювер знает о чем-то глобальном, возникают в 1% случаев. Через статики управлять флэшкой проще, чем каждый вьювер извне подписывать, отписывать, создавать кучу кастомных событий типа BUTTON_SUBMIT (а это очередная связка - про событие знает и контроллер. и вьювер, в одном dispatch в другом addEventListener), передавать ссылку на модель для функции update и др.

В моем подходе кода меньше, логика более прозрачна. А уж как называть его MVC или BAD MVC без разницы. Автор спрашивал, как проще и удобнее, я ответил


Последний раз редактировалось s8000_1; 04.07.2010 в 22:34.
Старый 04.07.2010, 22:59
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 18  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,600
Записей в блоге: 17
Цитата:
Насчет MVC. Я понимаю, что у каждого вьювера должен быть контроллер, подписывающий его на апдейты модели и управляющий моделями.
Неа, зачем? У вьюшки есть только модель, контроллера может и не быть. Другое дело, что и модель в таком случае излишне, как и излишен весь MVC.
Цитата:
нужно динамически создавать контроллеры, в них вьюверы
Её можно и не в контроллере делать
Цитата:
Гораздо удобнее внутри вьювера автоматически подписать себя на апдейты любой модели через глобальные статические переменные и управлять моделями через глобальный контроллер.
У Вас наверно проекты не очень большие, в которых и MVC не нужен.

Цитата:
А что если вьювер не на сцене (ну там, окошко плавно исчезло, после того, как исчезло надо что-то сделать)? Тогда что, свой диспатчер писать? Задача переусложняется.
Ну э, контроллеру в принципе плевать, есть stage у вьюшки или нету. Или я не о том?
Цитата:
Котяра, это в теории. На практике проблемы от того, что вьювер знает о чем-то глобальном, возникают в 1% случаев.
А это уже сродни инкапсуляции. Идеальный программист в вакууме может её вообще не делать - и всё будет замечательно. Чем меньше доступно действий - тем меньше шансов что-то поломать. Вот и вся философия. Если у меня всё управляется статикой - пусть, но пусть оно стоит того. Тут не стоит, но я тему не сильно читал)

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

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Цитата:
Сообщение от s8000_1 Посмотреть сообщение
Котяра, это в теории. На практике проблемы от того, что вьювер знает о чем-то глобальном, возникают в 1% случаев. Через статики управлять флэшкой проще, чем каждый вьювер извне подписывать, отписывать, создавать кучу кастомных событий типа BUTTON_SUBMIT (а это очередная связка - про событие знает и контроллер. и вьювер, в одном dispatch в другом addEventListener), передавать ссылку на модель для функции update и др.
Да Бог с Вами.. Просто я увидел в Вашем коде
click="AppGlobal.controller.openWindow(something)
AppGlobal.view.windowContainer.open(something)

а это соооооовсем не MVC.

Цитата:
Сообщение от s8000_1 Посмотреть сообщение
В моем подходе кода меньше, логика более прозрачна. А уж как называть его MVC или BAD MVC без разницы. Автор спрашивал, как проще и удобнее, я ответил
Проще и удобнее? Логика прозрачнее ? Вряд-ли это так..
Писатель вьюшек должен знать о : AppGlobal.controller.openWindow(something) ? Не проще ли просто слать события опеделённого типа..
Подход через глобальные переменные - плохой подход и использование его должно иметь очень сильные оправдания.
__________________
Отряд Котовскага

Старый 05.07.2010, 00:40
s8000_1 вне форума Посмотреть профиль Отправить личное сообщение для s8000_1 Найти все сообщения от s8000_1
  № 20  
Ответить с цитированием
s8000_1
 
Аватар для s8000_1

Регистрация: Jun 2007
Сообщений: 374
Котяра, я использую этот подход для UI, который в большинстве случаев пишет один человек полностью)

А для игрового процесса, с подгружаемыми персонажами на карту, например, правильное MVC, ибо внешняя swfка ничего и не может знать о родителе.

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

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

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


 


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


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