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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 25.11.2008, 03:09
s8000_1 вне форума Посмотреть профиль Отправить личное сообщение для s8000_1 Найти все сообщения от s8000_1
  № 41  
Ответить с цитированием
s8000_1
 
Аватар для s8000_1

Регистрация: Jun 2007
Сообщений: 374
Цитата:
Сообщение от __etc Посмотреть сообщение
1) Это каким образом изменение модели прошло в обход контроллера? Контроллер, если и слушает изменение модели, то только лишь те изменения, которые требуют добавления/удаления вьюверов. В противном случае, изменения отслеживаются исключительно вьюверами. Ну а если подходить к возможным замкнутым рекурсиям, то в любом случае (в любом, это важно), в сеттере должна стоять проверка на текущее значение, типа if (this._somevalue === value) return;.
Я про случай делегирования, когда во вьювере нет функции апдейта:
Код AS3:
//контроллер
ns = new NumericStepper();
ns.addEventListener(Event.CHANGE, updateModel);
model.addEventListener(Event.CHANGE, updateViewers);
 
function updateViewers():void{
 ns.value = model.value;
}
 
function updateModel():void{
 model.value = ns.value;
}
Так значит ситуация, когда сеттер вызывается вхолостую из-за того, что вьювер сам себя уже проапдейтил (тот же NumericStepper), возможна (см. код выше)?

Или все же надо сделать класс, наследующийся от NumericStepper, и убирающий этот "самоапдейт" из него?

Логика подсказывает, что проще вызвать сеттер вхолостую (с проверкой который), чем все делать идеально "правильно" переписав кучу стандартных компонент под "идеологию MVC".


Последний раз редактировалось s8000_1; 25.11.2008 в 03:23.
Старый 25.11.2008, 03:21
r_r_f_r вне форума Посмотреть профиль Отправить личное сообщение для r_r_f_r Найти все сообщения от r_r_f_r
  № 42  
Ответить с цитированием
r_r_f_r

Регистрация: Sep 2008
Адрес: Москва
Сообщений: 224
Уиконтролы это чистые вьюверы, а если очень хочется в контроллер задать теже width, height то их стоит скромно делегировать, хотя нужно ли оно, это ещё вопрос.

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

Регистрация: Jun 2007
Сообщений: 374
Цитата:
Сообщение от r_r_f_r Посмотреть сообщение
Уиконтролы это чистые вьюверы
Я не сказал бы так, потому что у всех UIComponent "величина_которую_надо_апдейтить_извне" - это та же самая "величина_которая_апдейтится_изнутри". Контроллер следит за первой и апдейтит модель, вьювер подписан на апдейты модели и изменяет вторую величину.

Старый 25.11.2008, 12:23
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 44  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от BlooDHounD Посмотреть сообщение
__etc, ну зачем категорично? это комбо-система ... пример: любой уиконтрол
А я не считаю логику в уиконтролах контроллерами

Цитата:
Сообщение от s8000_1 Посмотреть сообщение
Я про случай делегирования, когда во вьювере нет функции апдейта:
А должна быть. В контроллере быть не должно.

Цитата:
Сообщение от s8000_1 Посмотреть сообщение
Логика подсказывает, что проще вызвать сеттер вхолостую (с проверкой который), чем все делать идеально "правильно" переписав кучу стандартных компонент под "идеологию MVC".
Проверка в сеттере по определению должна быть, а «холостые» вызовы — неизбежны в MVC.


Цитата:
Сообщение от s8000_1 Посмотреть сообщение
потому что у всех UIComponent
А в UIComponent, написанных как попало, много ещё чего не так.

Старый 25.11.2008, 14:35
r_r_f_r вне форума Посмотреть профиль Отправить личное сообщение для r_r_f_r Найти все сообщения от r_r_f_r
  № 45  
Ответить с цитированием
r_r_f_r

Регистрация: Sep 2008
Адрес: Москва
Сообщений: 224
Цитата:
Сообщение от s8000_1 Посмотреть сообщение
Я не сказал бы так, потому что у всех UIComponent "величина_которую_надо_апдейтить_извне" - это та же самая "величина_которая_апдейтится_изнутри". Контроллер следит за первой и апдейтит модель, вьювер подписан на апдейты модели и изменяет вторую величину.
да в них есть какое-то подобие котроллера, но если не брать в рассмотрение сложные компоненты(грид и ...), контроллера там просто нет, есть стартовый UIComponent который и делает всю работу за них, это компоненты, а не mvc структура.

Старый 25.11.2008, 15:57
†‡Paladin‡† вне форума Посмотреть профиль Отправить личное сообщение для †‡Paladin‡† Найти все сообщения от †‡Paladin‡†
  № 46  
Ответить с цитированием
†‡Paladin‡†

Регистрация: Nov 2005
Сообщений: 1,058
Чето я невкурил что мешает сделать компонент по mvc модели. Пускай он там имеет собственный модель вид и контроллер, главное-чтобы это не касалось никого кроме него. Или я вообще не в тему?

Старый 25.11.2008, 20:57
r_r_f_r вне форума Посмотреть профиль Отправить личное сообщение для r_r_f_r Найти все сообщения от r_r_f_r
  № 47  
Ответить с цитированием
r_r_f_r

Регистрация: Sep 2008
Адрес: Москва
Сообщений: 224
Законченная mvc подразумевает присутствие модели, а что за компонент такой в котором модель находится внутри.

Второй пункт, пусть компонент имеет собственный контроллер, вид и модель, но тогда появляется вопрос кого добавлять на сцену, по идеологии только контроллер имеет ссылки на всех, т.е. нужно добавлять на сцену его, но он также не может быть отображаемым объектом, ..., это идеальная модель которая если и реализовывается то начиная с самого Document Class'a, в других же случаях мы пишем как раз то что предоставляет нам adobe.

Старый 25.11.2008, 21:10
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 48  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Компонент — это набор контролов (например, окно), а не один контрол, как называют в Adobe. Менеджер компонентов их создает и добавляет на сцену. Компонент при создании сам может создать контроллер со ссылкой на себя, дальше работает контроллер.

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

Регистрация: Sep 2008
Адрес: Москва
Сообщений: 224
Цитата:
Сообщение от __etc Посмотреть сообщение
Компонент при создании сам может создать контроллер со ссылкой на себя, дальше работает контроллер.
Подразумеваешь делегирование создания всей структуры Display Object обёртке?

Старый 25.11.2008, 21:58
†‡Paladin‡† вне форума Посмотреть профиль Отправить личное сообщение для †‡Paladin‡† Найти все сообщения от †‡Paladin‡†
  № 50  
Ответить с цитированием
†‡Paladin‡†

Регистрация: Nov 2005
Сообщений: 1,058
Цитата:
Сообщение от r_r_f_r Посмотреть сообщение
Законченная mvc подразумевает присутствие модели, а что за компонент такой в котором модель находится внутри.

Второй пункт, пусть компонент имеет собственный контроллер, вид и модель, но тогда появляется вопрос кого добавлять на сцену, по идеологии только контроллер имеет ссылки на всех, т.е. нужно добавлять на сцену его, но он также не может быть отображаемым объектом, ..., это идеальная модель которая если и реализовывается то начиная с самого Document Class'a, в других же случаях мы пишем как раз то что предоставляет нам adobe.
Чем стандартное свойство data UIComponent`а не тянет на модель?
Почему нельзя создать внутри контроллер, управляющий моделью?
И почему обычный drawRect не может служить видом? Все можно запихать в 1 класс и наслаждаться работой, не подозревая о реализации.

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

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

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


 


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


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