MovieClip: единый addEventListener
Вложений: 1
(Можно даже сказать: Единый Слушатель Событий Ада), лол.
Ок, всем привет. Есть мувиклип Area1, в котором находятся три других мувиклипа: Krug1, Krug2, Krug3. Все они залинкованы к одноименным классам через галочку Export to ActionScript. Изначально стэйдж пустой. Класс Main заполняет его вот так: Вложение 29909 Нужно, чтобы по клику мыши определялось какой кружок был нажат, и шло соответвующее действие. Конешно, это можно сделать повесив на каждый кружок свой слушатель, но так не интересно. Можно ли повесить только один слушатель на объект Area1, чтобы он, через родительские ссылки определял, какой кружок был нажат? Я попытался сделать так: Основной класс: Код AS3:
Код AS3:
Но как это сделать? Вроде бы нужно как-то e.currentTarget. использовать, но не понимаю как именно. Некоторое соображение: Изначально, у объектов на стэйдж нет <Instance names>. Подозреваю что если бы они были, то было бы проще. Тогда наверное прокатило бы что-то вроде: Код AS3:
|
Код AS3:
|
Используйте #Event.target
|
currentTarget выдаст объект на который вы повесили слушатель, в данном случае Area1 (это прямоугольник в котором круги? ) а не круг.
target выдаст непосредственно IEventDispatcher который первым словил событие, если объект состоит из множества фигурок, то e.target будет не мувик Krug1, а какой-нибудь Shape694, и нужно будет проверять какой круг содержит этот шейп. Можно создать класс Круг, там рисовать кружок, ловить и обрабатывать событие, в этом случае E.currentTarget будет именно тот Круг который нужен. Цитата:
|
Подписаться на все три клика одним листенером и смотреть event.currentTarget
Добавлено через 1 минуту Цитата:
|
Dukobpa3, путаетесь. Смотреть надо target :)
|
Это вы, товарищ не поняли мой ответ.
Я сказал про три клика. На три объекта. Но листенер один. Добавлено через 1 минуту А про таргет вон выше ответили. Всякие шейпы фильтровать нафиг надо. Таргетом никогда не пользуюсь. |
Dukobpa3, а вон оно что) Ну тогда да currentTarget.
Какой вариант удобнее и лучше зависит от задачи. В данном случае разницы нет. В случае если объектов туева хуча, (н-р интерактивная карта) target будет предпочтительнее. :) |
В моей практике встречался подобный момент. Некоторые выдержки из кода:
Код AS3:
Код AS3:
|
Hauts, нет, так не помогло:
Код AS3:
Спасибо за указание на прием: is Object, я не сообразил что так можно. Deimos747, AlexLucas, Котейка, благодарю за наводку на .target, сделал вот так: Код AS3:
Или может быть они были бы нужны в каком-то более сложном случае? Например при сильной вложенности, или еще как. Dukobpa3, Код AS3:
Dukobpa3, Цитата:
SvetozarPNZ, мне просторе решение с target помогло. Про useCapture не в курсе, возможно это нужно в более сложных случаях вложенности объектов? За ссылку спасибо. |
Часовой пояс GMT +4, время: 00:21. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.