![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Oct 2011
Сообщений: 18
|
Замечено, если удалить SimpleButton со сцены, в тот момент, когда над ним находится указатель мыши (состояние Over), а затем переместить указатель в другое место и вновь добавить кнопку SimpleButton на сцену, у этой кнопки так и останется состояние over, пока указатель мыши снова не пройдет над этой кнопкой.
Как программно сбрасывать состояние в зависимости от того находится ли указатель мыши над кнопкой или нет? |
|
|||||
|
Может стоит создавать новый инстанс?
Состояние over "сбрасывается", когда кнопка получает событие MouseEvent.MOUSE_OUT. Если до прохождения этого события убрать кнопку, увести мышку, и снова сделать кнопку видимой - не вижу ничего странного, что кнопка, не обработав никаких событий смиренно ждёт новых приказов оставаясь в последнем указанном ей состоянии.
__________________
Дебаггер не предлагать |
|
|||||
|
Регистрация: Oct 2011
Сообщений: 18
|
Что значит создать новый инстанс? (не понял термин) Есть ли какие-нибудь готовые или универсальные решения, для того, чтоб программно сбросить состояние кнопки? Кто как делает?
|
|
|||||
|
Banned
|
Как вариант, делать кнопке mouseEnabled = false, а за тем, через фрейм или 1 мс удалять со сцены. За это время, в следующем тике, эта кнопка получит событие о том, что мышка ушла с объекта и её состояние будет дефолтным. После этого, можно добавлять и все будет гуд. Не забудь вернуть mouseEnabled = true.
|
|
|||||
|
Регистрация: Oct 2011
Сообщений: 46
|
для программного "сброса" можно попробовать SimpleButton.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_OUT); Это как бы съэмитирует убирание курсора с кнопки.
|
|
|||||
|
Регистрация: Sep 2011
Адрес: http://infinityapps.ru
Сообщений: 36
|
Roman_Konyukhov создать новый инстанс, это значит создать новый экземпляр класса, т.е. его объект. В данном случае класс SimpleButton. Если на старую кнопку не где не храниться ссылка, то сборщик мусора удалит её из памяти и все будет хорошо.
|
|
|||||
|
Если класс не имеет необходимого функционала, нужно не костыли плодить, а расширить компонент и добавить нужный функционал в него. А если это невозможно или опять же костыльно, то написать свой компонент, и опыт, и в будущем пригодится. Написать свою кнопку ничего сложно. Можно посмотреть как это реализовано в других библиотеках.
__________________
http://www.chessmax.ru |
|
|||||
|
Регистрация: Oct 2011
Сообщений: 46
|
даже не знаю что вы делаете с кнопкой что она так себя ведет. В простейшем примере когда при наведении кнопка удаляется/скрывается и потом обратно добавляется/становится_видимой состояние у неё вполне нормальное (по крайней мере у меня так)
|
|
|||||
|
упражнения с бубном дали таки способ
кнопка удаляется\добавляется по любой клавише public class Main extends Sprite { private var but:Symbol1; public function Main():void { but = new Symbol1(); addChild(but); stage.addEventListener(KeyboardEvent.KEY_DOWN, stage_keyDown); // без этого имеем сабжевый эффект but.addEventListener(Event.ADDED, but_added); } private function but_added(e:Event):void { if (e.target == e.currentTarget) { // 'передергивание' фокуса решает вопрос var focus:InteractiveObject = stage.focus; stage.focus = but; stage.focus = focus; } } private function stage_keyDown(e:KeyboardEvent):void { but.parent ? removeChild(but) : addChild(but); } } Последний раз редактировалось silin; 29.11.2011 в 17:09. |
|
|||||
|
Регистрация: Oct 2011
Сообщений: 18
|
Спасибо за помощь.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 14:37. |
|
|
« Предыдущая тема | Следующая тема » |
|
|