Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Модель Event'ов в ActionScript3 (http://www.flasher.ru/forum/showthread.php?t=117022)

marat_sa 16.10.2008 18:04

Модель Event'ов в ActionScript3
 
Здравствуйте, кто-нибудь (кроме разработчиков Adobe:)) до конца понимает всю модель распространения событий в AS3? Все видели эту схему распространения события со сцены до источника и обратно: захват, пузыри и т.д. Ну а если объект не в списке отображения? А если он вообще не DisplayObject? Вобщем ответьте, пожалуйста, мне на следующие вопросы:
1) Поток событий идет только по объектам-родителям источника?
Типа:
Код:

Stage -
  | => parent1
              | => parent2
                          | => targetObject

2) Здесь же: Если рядом с parent1, будет parent1.1, до него ничего не дойдет?
Код:

Stage -
  | => parent1    | = parent1.1
                | => parent2
                          | => targetObject

3) Все дети parent2, кроме targetObject не смогут поймать событие?
4) Дети targetObject не смогут поймать событие?
5) Как вообще посылать событие глубже targetObject?
6) Если targetObject создан, но не добавлен в список отображения или это класс не DisplayObject, то как будет происходить распространение события?
7) Можно диспачить событие в объект?
Код:

someObject.dispatchEvent(new Event(...));
И смысл этого действия, если мы можем обратиться к someObject, то можем и тупо вызвать нужный нам метод?
:wacko:
Вроде пока все... Ответьте, пожалуйста, кто как может :)

mre 16.10.2008 18:26

1) Да.
2) Нет.
3) Внутри себя не смогут.
4) Внутри себя не смогут.
5) Никак. Зачем?
6) Если это не DisplayObject, то событие вообще нельзя послать, а если объект не добавлен в DisplayList, то за пределы самого объекта событие не уйдет.
7) Можно. Смысл может и есть, ведь вызов метода и отправка события - разные вещи. У меня не было необходимости в такой конструкции.

etc 16.10.2008 18:28

1) От targetObject до Stage, а не так, как вы нарисовали (стрелки в другую сторону);
2) Не дойдет, только вверх по родителям (опять же, стрелки в другую сторону должны быть);
3) Не смогут;
4) Не смогут;
5) Вниз?
6) Никак не будет, бабблинг работает исключительно в display list;
7) Вы привели пример отправки события объектом someObject. Если же вам надо вызвать метод — вызовите его.

marat_sa 16.10.2008 18:40

> 6) Если это не DisplayObject, то событие вообще нельзя послать...

Т.е., события могуть отправлять и ловить только DisplayObject? О_о

etc 16.10.2008 18:44

Цитата:

Сообщение от marat_sa (Сообщение 770798)
> 6) Если это не DisplayObject, то событие вообще нельзя послать...

Т.е., события могуть отправлять и ловить только DisplayObject? О_о

Нет, наследники EventDispatcher.

NePridymal 16.10.2008 18:50

События могут отправлять EventDispatcher-ы , ловить всплывающие события могут только объекты в DisplayList. Если EventDispatcher не в DisplayList-е то и событие, посланое этим объектом смогут услышать только слушатели событий этого объекта.

marat_sa 16.10.2008 18:51

А, да точно...

>1) От targetObject до Stage, а не так, как вы нарисовали (стрелки в другую сторону);
http://riapriority.com/blogs/constantiner.php/c16/
Так они ж смотря в какой фазе, стрелочки-то... Или что вы имеете ввиду?

> 7) Вы привели пример отправки события объектом someObject.
Да, перепутал X_X
Тогда так: можно ли по этой схеме:
Код:

someObject.dispatchEvent(new Event(...));
Назначить из другого объекта объект someObject в качестве отправителя события?

etc 16.10.2008 20:55

Цитата:

Сообщение от marat_sa (Сообщение 770804)
>1) От targetObject до Stage, а не так, как вы нарисовали (стрелки в другую сторону);
http://riapriority.com/blogs/constantiner.php/c16/
Так они ж смотря в какой фазе, стрелочки-то... Или что вы имеете ввиду?

Фазу пузырька.

Цитата:

Сообщение от marat_sa (Сообщение 770804)
Назначить из другого объекта объект someObject в качестве отправителя события?

А зачем?


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

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