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

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

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

Регистрация: Aug 2009
Сообщений: 18
Получается. что bubbling тоже зло?

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

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от microed Посмотреть сообщение
Получается. что bubbling тоже зло?
Если X зло, то не значит что и Y тоже зло. Вам бы с такими выводами законы писать, что ли.

Старый 20.03.2010, 05:33
microed вне форума Посмотреть профиль Отправить личное сообщение для microed Найти все сообщения от microed
  № 13  
Ответить с цитированием
microed

Регистрация: Aug 2009
Сообщений: 18
Если Y основано на тех же механизмах, что и X, то чем же такой вывод нелогичен? И если capturing де "нарушает инкапсуляцию" (хотел бы я знать, где он ее нарушает), то почему же bubbling - нет?

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

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от microed Посмотреть сообщение
Если Y основано на тех же механизмах, что и X, то чем же такой вывод нелогичен? И если capturing де "нарушает инкапсуляцию" (хотел бы я знать, где он ее нарушает), то почему же bubbling - нет?
Нарушает, потому что позволяет перехватить событие, уходящее в черный ящик. А выходящие из него всплывающие события никакой инкапсуляции не нарушают.

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

Регистрация: Sep 2008
Сообщений: 717
Записей в блоге: 4
Отправить сообщение для Mur4ik с помощью ICQ
Если по хорошему, то ни "Child1 Node" ни "Child2 Node" не должны вообще слушать каких либо событий для изменения своего состояния. Таким образом они получатся легко переносимыми и не так тесно связанными/зависящими от окружения.

Вместо подписывания на события они должны предоставить публичные методы для изменения своего состояния (желательно через интерфейсы) и заинтересованные в изменении этих компонентов объекты должны сами решать как и когда и на основе чего дергать эти методы.

Ну это если говорить о масштабируемости и переносимости и реюзабельности того что вы пишете. А для простейших случаев (когда проект маленький, типа написал и забыл) пойдет и "зло" и "не зло" нарушающее или нет любые идеологии
__________________
trace("Остановите Землю, я сойду!!!");

Старый 20.03.2010, 14:06
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 16  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Цитата:
Если по хорошему, то ни "Child1 Node" ни "Child2 Node" не должны вообще слушать каких либо событий для изменения своего состояния
Ну да, все правильно. Не для изменения своего состояния, а для отсылки сигнала в модель (M), которая затем обновит вид (V). Просто в данном случае контроллер (C) немного пересекается с видом. Но, по большому счету, от этого "пересечения" не избавиться, ибо события мыши происходят не сами по себе, а над каким-то визуальным объектом.
Это если смотреть на мир через призму MVC.
__________________
...вселенская грусть

Старый 20.03.2010, 15:38
microed вне форума Посмотреть профиль Отправить личное сообщение для microed Найти все сообщения от microed
  № 17  
Ответить с цитированием
microed

Регистрация: Aug 2009
Сообщений: 18
Цитата:
Сообщение от etc Посмотреть сообщение
Нарушает, потому что позволяет перехватить событие, уходящее в черный ящик. А выходящие из него всплывающие события никакой инкапсуляции не нарушают.
Это всё происходит снаружи, а сам "черный ящик" [объект] никто не трогает. Поэтому никакого нарушения инкапсуляции нет ни в том, ни в другом случае.

Старый 20.03.2010, 15:52
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 18  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Да-да, конечно. Но вот только если кто-то подписался на capture вашего события, а вы в свою очеред подписались только на target + bubbling (что вы всегда делаете по умолчанию) - и потом в его обработачике случилась ошибка, или он тупо взял и stopImmediatePropagation() сделал - результат: ваш код не работает, но сделать с этим вы ничего не можете.
__________________
Hell is the possibility of sanity

Старый 20.03.2010, 17:26
Mur4ik вне форума Посмотреть профиль Отправить личное сообщение для Mur4ik Найти все сообщения от Mur4ik
  № 19  
Ответить с цитированием
Mur4ik
ветеран форума

Регистрация: Sep 2008
Сообщений: 717
Записей в блоге: 4
Отправить сообщение для Mur4ik с помощью ICQ
Цитата:
Сообщение от gloomyBrain Посмотреть сообщение
Ну да, все правильно. Не для изменения своего состояния, а для отсылки сигнала в модель (M), которая затем обновит вид (V). Просто в данном случае контроллер (C) немного пересекается с видом. Но, по большому счету, от этого "пересечения" не избавиться, ибо события мыши происходят не сами по себе, а над каким-то визуальным объектом.
Это если смотреть на мир через призму MVC.
Что то вы перемудрили с постом
__________________
trace("Остановите Землю, я сойду!!!");

Старый 20.03.2010, 22:51
microed вне форума Посмотреть профиль Отправить личное сообщение для microed Найти все сообщения от microed
  № 20  
Ответить с цитированием
microed

Регистрация: Aug 2009
Сообщений: 18
Цитата:
Сообщение от wvxvw Посмотреть сообщение
Да-да, конечно. Но вот только если кто-то подписался на capture вашего события, а вы в свою очеред подписались только на target + bubbling (что вы всегда делаете по умолчанию) - и потом в его обработачике случилась ошибка, или он тупо взял и stopImmediatePropagation() сделал - результат: ваш код не работает, но сделать с этим вы ничего не можете.
Нормальную инкапсуляцию такими глупостями не сбить. Не надо подписываться внутри объекта на события, предназначенные для dispatch'а другим, во вне. Внутри объекта генерим свои события для унутренного пользования. Потому что нет возможности контролировать способ, которым "кто-то подписался" снаружи: то ли поставил он flag на capture, то ли сбросил...

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

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

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


 


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


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