Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Отключить (на время) MouseEvent parent-а. (http://www.flasher.ru/forum/showthread.php?t=129731)

FreshFlashEr 08.09.2009 23:27

Отключить (на время) MouseEvent parent-а.
 
Eсть sprite-parent на нём группа sprite-child-ов (работают как кнопки).
У parent-а и у child-ов свои MouseEvent-ы.
Естессно, при нажатии на child - parent тоже ловит (свой click).
Как отключить (на время нажатия child-а) MouseEvent у parent-а?

wvxvw 09.09.2009 00:33

event.stopImmediatePropagation()

etc 09.09.2009 00:41

Цитата:

Сообщение от wvxvw (Сообщение 849285)
event.stopImmediatePropagation()

Я думаю, обычного stopPropagation достаточно, не нужно так усердствовать :quiet:

wvxvw 09.09.2009 00:49

что первое попало в автокомплит :)

switcher! 09.09.2009 01:22

вопрос докучи: а не будет ли быстрее всегда писать event.stopPropagation() в том же клике мыши, чтобы исключить bubbling phase, а значит и затраты времени на прохождение по дисплейлисту.
если подразумевается, что в предках листнеров мыши не будет (я так понимаю, отмена действует только на конкретное событие/клик)
?

wvxvw 09.09.2009 01:45

Даже если и будет быстрее то:
- на сколько? (ну, сколько уровней вложености у вас будет в проекте, 10 - это уже кажется много...)
- ну даже предположим, что 10, проверить 10 раз в цикле hasEventListener() - ну тоже мне как-то представляется не особо требовательной к ресурсам операцией...
Так что даже если и быстрее - увеличение скорости будет в микросекундах, и то если... так, что думаю, оно того не стоит, но проверять, конечно, стоит всегда :)

switcher! 09.09.2009 02:17

тогда вытекающее отсюда дополнительное решение вопроса темы - это дописать в начале обработчика (листнера мыши) sprite-parent'а
Код AS3:

        if (event.eventPhase == 3)
        {
                return;
        }

Решение может и не элегантное/эффективное, но рабочее -)))

FreshFlashEr 09.09.2009 03:53

Спасиб!
Так вот это (eventPhase == 3) как раз и без проблем сработало.
А с stopPropagation пока как-то не очень...

Я так понял stopPropagation в child-event нужно?
child и parent - каждый в своём отдельном классе...
(просто на таймлайне stopPropagation работает). Что не так (уже просто - ради интереса)?

wvxvw 09.09.2009 04:10

Мануал = друг

FreshFlashEr 09.09.2009 11:55

Цитата:

Сообщение от wvxvw (Сообщение 849334)

Ну это – бесспорно! Только один абзац мне особо ничего не дал (кроме общеознакомительной информации). Более того, по этому примеру всё понял (про stopPropagation) http://www.learningactionscript3.com...t-propagation/. Да только не срабатывает в child-е всё вышеуказанное. Может кто на пальцах покажет (куда у кого вставить, чтоб заработало)?


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

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