|
|
|||||
[+3 18.04.11]
Регистрация: Dec 2010
Сообщений: 342
|
Отследить цель мышиного события
Есть контент-спрайт, в котором находятся различный спрайты и текстовые поля, имеющие мышиные события. Мне нужно сделать так, чтобы по клику на любой области, кроме самого спрайта-контента, контен исчезал. То есть фактически мне нужно определить кликнул я по спрайту-контенту или вне его. Я могу это сделать, если
this.mouseChildren = false; private function onStageClick(e:MouseEvent):void { trace(e.target); } Как можно еще решить данную проблему? Добавлено через 6 минут Я решил эту проблему проверяя координаты мышки относительно спрайта-контента. может есть более лучшее решение? Последний раз редактировалось DZHETIGAPA; 21.05.2011 в 23:13. |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Может Вы лучше скажете, КУДА Вы добавляете листенер и где написаны эти куски кода, что здесь this? Вас слегка совсем непонятно.
__________________
Reality.getBounds(this); |
|
|||||
[+3 18.04.11]
Регистрация: Dec 2010
Сообщений: 342
|
this - это контент-спрайт.
Извиняюсь за немного непонятный топик. |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
ОК. Но trace(e.target) не может выдавать стейдж, если Вы кликаете по контенту. Таргетом будет контент. На стейдж будет указывать e.currentTarget.
Вы хотите на самом деле ловить клик в том месте, где нет контента, но еще есть прямоугольник контейнера? В пустом месте контейнера? Тогда придется создать ему заливку прозрачным цветом.
__________________
Reality.getBounds(this); |
|
|||||
[+3 18.04.11]
Регистрация: Dec 2010
Сообщений: 342
|
Цитата:
Цитата:
|
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Да. Ну не обязательно так дословно, заливкой может быть не интерактивный объект - Шейп например, или это может быть graphics самого спрайта-контейнера, как Вам удобно. Может быть и интерактивный - закрашенный спрайт. В любом случае e.target уже не будет указывать на стейдж, если клик придется на эту область. То есть надо будет проверять в обработчике, является ли e.target стейджем, если да - то клик мимо контейнера и его контента.
Добавлено через 4 минуты Точнее, так не правильно говорить)) Правильно - "клик был по пустому стейджу". Это значит, что если клик придется не на Ваш контейнер, а на какой-то другой объект на стейдже, условие так же не выполнится, таргетом будет не стейдж а этот "другой объект".
__________________
Reality.getBounds(this); |
|
|||||
[+3 18.04.11]
Регистрация: Dec 2010
Сообщений: 342
|
Спасибо большое!
|
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Если все же надо будет разделить клик по контейнеру, клик по пустому стейджу и клик по объекту на стейдже, но не контейнеру, можно повесить на контейнер листенеры событий ROLL_OVER и ROLL_OUT, и ставить в них флаг, говорящий что мышка сейчас над контейнером или нет. Тогда в обработчике, когда окажется что e.target указывает не на стейдж (то есть кликнули не на пустом месте), можно узнать, не над контейнером ли мышка. Если нет, то закрыть контейнер.
__________________
Reality.getBounds(this); |
|
|||||
Регистрация: Mar 2011
Сообщений: 35
|
mouseChildren не трогать.
|
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
точно, так проще))
__________________
Reality.getBounds(this); |
Часовой пояс GMT +4, время: 20:07. |
|
« Предыдущая тема | Следующая тема » |
|
|