Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   MOUSE_OVER срабатывает на тексте но не на Sprite или Shape (http://www.flasher.ru/forum/showthread.php?t=183116)

MINASTIS 12.08.2012 21:59

MOUSE_OVER срабатывает на тексте но не на Sprite или Shape
 
С помощью addChild я добавляю два элемента в кнопку. TextField и Shape. Первое для надписи на кнопке, второе естественно, для формы.
Код AS3:

                        buttonBody.addChild(buttonShape);
                        buttonBody.addChild(buttonTextField);
addChild(buttonBody);

Сначала я добавляю форму, а после текст, чтобы по индексу текст было видно.
Теперь, если добавить листенер buttonBody, который активирует парочку твинов (один из которых передвигает все текстовое поле влево), то он почему-то считается, что MOUSE_OVER и MOUSE_OUT должен реагировать именно на текстовое поле.

То есть, оставив мышку там, где было текстовое поле до твина, и куда оно возвращается после MOUSE_OUT, можно зациклить событие (откатился текст - прикатился текст).
В чем может быть дело? Если какие части кода нужны, кину, я просто думаю, может я не знаю о каких-то особых свойствах addChild-а, глубины(индекса) и т.д., которые дают такой странный косяк.

Кстати, суть в том что на buttonShape листенер вообще не реагирует. Хотя он там, за текстовым полем виднеется! Как так, если оба элемента находятся в buttonBody и на весь buttonBody повешен листенер?

illuzor 12.08.2012 22:27

Начнём с того, что Shape вообще не генерирует события мыши.
Если хотите, чтоб спрайт под текстовым полем реагировал на мышь, отключите обработку событий мыши у текстфилда.
tf.mouseEnabled = false;

Цитата:

я не знаю о каких-то особых свойствах addChild
addChild() - это метод. У него нет событий и свойств(за исключением свойств класса Function)

Wolsh 12.08.2012 22:46

Код AS3:

buttonBody.mouseChildren = false;


MINASTIS 12.08.2012 22:54

Спасибо, помогло! :)
Главная моя ошибка была в том, что я пытался на Shape повесить листенер, когда надо было на спрайт.
И еще текст, конечно) Спасибо.

caseyryan 12.08.2012 23:01

Вместо MOUSE_OVER и MOUSE_OUT в большинстве случаев лучше использовать ROLL_OVER и ROLL_OUT

zerAlex2 13.08.2012 22:00

Обычно делаю строки:
Код AS3:

this.mouseEnabled=false;
this.mouseChildren=false;
this.mouseEnabled=false;


caseyryan 13.08.2012 22:37

Зачем?
И зачем mouseEnabled назначается дважды?

MINASTIS 13.08.2012 22:38

Я сделал mouseEnabled = false а после создал полностью прозрачный спрайт для области нажатия :) Скукожилась ли кнопка от программной анимации или текст выглянул из-за фона кнопки, область нажатия все та же, что мне очень помогло.

alatar 14.08.2012 00:54

Для этого у спрайта есть свойство hitArea.

zerAlex2 18.08.2012 00:40

Очепятка


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

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