![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
|
п.2 спасибо, Денис. Там была ошибка по тексту. Исправил.
Баблинг не стал корявым. И тут я ошибся, только в другую сторону: с помощью баблинга вроде как нельзя проинформировать детей. Так что описаная ситуация невозможна. Впрочем, я могу ошибаться, не проверял. Вообще, что касается событий, я бы сказал, что это штука довольно мощная, однако подходить к использованию событий надо с умом и осторожностью. Теоретически, все вызовы методов можно заменить событиями, однако этого никто не делает, поскольку это усложняет восприятие логики приложения. Соответственно есть некая грань, которую нужно довольно четко понимать и думать, а стоит ли использовать именно событие. Последний раз редактировалось etc; 05.03.2008 в 09:07. |
|
|||||
|
Думаю уместно задать здесь свой вопрос.
Читаю справку и блок Constantiner-a пытаюсь разобраться с Event flow. Я представляю себе это так: есть некий объект из дисплэй листа, сам по себе он никагого события из вне отловить не может (естественно), например, нажатие мыши. Флэш плеер говорит этому объекту, знаешь, дорогой генери такое-то событие. (В АС2 было только так). Но в АС3 это событие исходит не сразу от объекта источника, а движется от среды (Flash Player) к этому объекту. Не спроста есть свойство target, название которого как-то замыливается, но если подумать, почему объект стал целью, если он источник. А вот оказывается, он "цель" для события которое имеет точку входа stage. Это что касается событий которые "из-вне" (клики, загрузка, девайсы...) Тут мне все понятно, процессом можно управлять: "пузырить", "не пузырить", прекращать распространение и тд. Не понятно есть ли какой-то поток событий для событий генерируемых "внутри"? Или тут урезанная программа возможна только стадия пузырька?
__________________
Сам себе репортер |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Цитата:
Что касается вызовов методов, то я по своему опыту могу сказать, что у меня прямые вызовы методов составляют где-то процентов 30 от всех… terbooter, не очень понял твой вопрос. |
|
|||||
|
Если коротко, то:
Существует ли поток событий если объект генерит событие с помощью dispatchEvent
__________________
Сам себе репортер |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Цитата:
Вообще говоря, ничего сложного в работе EventDispatcher нет. |
|
|||||
|
Никак не могу сделать примерчик, где событие генерится dispatchEvent,
а у какого-нибудь слушателя оно отрабатывается при этом target != currentTarget или eventPhase != 2; Пытаюсь делать так:
__________________
Сам себе репортер Последний раз редактировалось terbooter; 05.03.2008 в 09:32. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
(кастомный ивент мне было лень писать):
package {
import flash.display.Sprite;
import flash.events.Event;
public class Dispatcher extends Sprite {
public function Dispatcher() {
super();
super.addEventListener(Event.ENTER_FRAME, this.enterFrameHandler);
}
private function enterFrameHandler(event:Event):void {
super.dispatchEvent(new Event('custom', true));
}
}
}
package {
import flash.display.Sprite;
import flash.events.Event;
public class Listener extends Sprite {
public function Listener() {
super();
super.addEventListener('custom', this.customHandler);
super.addChild(new Dispatcher());
}
private function customHandler(event:Event):void {
trace(event);
}
}
}
[Event type="custom" bubbles=true cancelable=false eventPhase=3] [Event type="custom" bubbles=true cancelable=false eventPhase=3] [Event type="custom" bubbles=true cancelable=false eventPhase=3] [Event type="custom" bubbles=true cancelable=false eventPhase=3] [Event type="custom" bubbles=true cancelable=false eventPhase=3] [Event type="custom" bubbles=true cancelable=false eventPhase=3] [Event type="custom" bubbles=true cancelable=false eventPhase=3] |
|
|||||
|
Мой пример тоже заработал !
Это же волшебно! Теперь не буду париться и для каждого блока контроллеров весить листенер. Все листенеры буду весить прямо на сцену.
__________________
Сам себе репортер |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Цитата:
|
|
|||||
|
Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
|
Прям копи-пастом:
Для передачи событий из View (MVC) удобно использовать bubbling в сочетании со stopPropagation() там, где не требуется дальнейшее всплытие события. В итоге все события View отлавливаются в Main и далее перенаправляются куда требуется. |
![]() |
![]() |
Часовой пояс GMT +4, время: 20:38. |
|
|
« Предыдущая тема | Следующая тема » |
|
|