![]() |
MOUSE_OVER срабатывает на тексте но не на Sprite или Shape
С помощью addChild я добавляю два элемента в кнопку. TextField и Shape. Первое для надписи на кнопке, второе естественно, для формы.
Код AS3:
Теперь, если добавить листенер buttonBody, который активирует парочку твинов (один из которых передвигает все текстовое поле влево), то он почему-то считается, что MOUSE_OVER и MOUSE_OUT должен реагировать именно на текстовое поле. То есть, оставив мышку там, где было текстовое поле до твина, и куда оно возвращается после MOUSE_OUT, можно зациклить событие (откатился текст - прикатился текст). В чем может быть дело? Если какие части кода нужны, кину, я просто думаю, может я не знаю о каких-то особых свойствах addChild-а, глубины(индекса) и т.д., которые дают такой странный косяк. Кстати, суть в том что на buttonShape листенер вообще не реагирует. Хотя он там, за текстовым полем виднеется! Как так, если оба элемента находятся в buttonBody и на весь buttonBody повешен листенер? |
Начнём с того, что Shape вообще не генерирует события мыши.
Если хотите, чтоб спрайт под текстовым полем реагировал на мышь, отключите обработку событий мыши у текстфилда. tf.mouseEnabled = false; Цитата:
|
Код AS3:
|
Спасибо, помогло! :)
Главная моя ошибка была в том, что я пытался на Shape повесить листенер, когда надо было на спрайт. И еще текст, конечно) Спасибо. |
Вместо MOUSE_OVER и MOUSE_OUT в большинстве случаев лучше использовать ROLL_OVER и ROLL_OUT
|
Обычно делаю строки:
Код AS3:
|
Зачем?
И зачем mouseEnabled назначается дважды? |
Я сделал mouseEnabled = false а после создал полностью прозрачный спрайт для области нажатия :) Скукожилась ли кнопка от программной анимации или текст выглянул из-за фона кнопки, область нажатия все та же, что мне очень помогло.
|
Для этого у спрайта есть свойство hitArea.
|
Очепятка
|
Может проще разобраться с focus или addChildAt?
|
Вопрос-то решен. В случае если нужно над чем-то движущимся\скукоживающимся\меняющимся повесить листенер нажатия - проще сделать невидимый спрайт с определенными шириной и высотой и на него повесить.
|
проще слушетеля повесить на контейнер, а не на элементы внутри.
|
Тут-то и срабатывает "заикание".
Если его повесить на контейнер, чья форма состоит из кнопки и текста, причем кнопка скукоживатся по высоте по Твину, при ROLL_OVER - то случается вот что: если направить мышку на край контейнера, он начнет "скукоживать" твином свою высоту. Скукоживая, он становится меньше и уходит из-под курсора мышки. Что происходит дальше? Кнопка начинает расширяться, т.к. считает, что настало время ROLL_OUT. Расширается и тут же сразу встречает снова курсор, который все так же стоит на краю всей формы. Все повторяется до бесконечности, пока курсор мыши не убрать с формы контейнера вообще, или не поставить туда, где форма контейнера есть всегда (например ширина то твином не трогается, поставить курсор посередине по высоте и куда угодно по ширине) Короче - заикание, бесконечные рывки "скукожился раскукожился". Поэтому нужен стабильный, не изменяемый по форме 1 спрайт. Им и решил проблему. Объяснил странно, но многие 100% с такими проблемами сталкивались, делая тоже динамически изменяющую форму кнопку в коде, с нуля. |
А как вы представляете действия пользователя? Он должен мышь фокусировать на уменьшающейся кнопке?
|
| Часовой пояс GMT +4, время: 05:48. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.