![]() |
|
||||||||||
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
__________________
Reality.getBounds(this); |
|
|||||
|
Почитал и решил под редактировать с учетом написанного.
Еще раз под редактировал. package { import flash.display.MovieClip; import flash.display.Stage; import flash.events.MouseEvent; public class Cbutton extends MovieClip { private var _mcButton:mcButton=new mcButton ; private var _mcButton1:mcButton1=new mcButton1 ; private var _Down:Boolean=false; private var _DownButon:Object=new Object ; public function Cbutton():void { // constructor code onButtonCreate(_mcButton,100,100); onButtonCreate(_mcButton1,200,100); } private function onButtonCreate(But:MovieClip,x:int,y:int):void { addChild(But); But.stop(); But.x=x; But.y=y; this.addEventListener(MouseEvent.MOUSE_OVER, onMouseEvent); this.addEventListener(MouseEvent.MOUSE_OUT, onMouseEvent); this.addEventListener(MouseEvent.MOUSE_DOWN, onMouseEvent); stage.addEventListener(MouseEvent.MOUSE_UP, onMouseEvent); } private function onMouseEvent(event:MouseEvent):void { trace(event.target); switch (event.type) { case MouseEvent.MOUSE_OVER : if (_Down&&_DownButon==event.target) { _DownButon.gotoAndStop(3); } else { event.target.gotoAndStop(2); } break; case MouseEvent.MOUSE_OUT : event.target.gotoAndStop(1); break; case MouseEvent.MOUSE_DOWN : _DownButon=event.target; event.target.gotoAndStop(3); _Down=true; break; case MouseEvent.MOUSE_UP : if (!(event.target is Stage)) { event.target.gotoAndStop(2); } _Down=false; break; } } } }
__________________
Книги и желание лучшие учителя. Последний раз редактировалось Vektor; 13.11.2011 в 22:11. |
|
|||||
|
Цитата:
Добавлено через 1 минуту А, все, вопрос снял - увидел проверку |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
При чем тут даун на стейдже вообще. Вас должен интересовать только ап после дауна на кнопке.
Вот так поправил себе. Стало чудненько. private function handlerDown(event:MouseEvent):void { _isDown = true; _upState.visible = false; _overState.visible = false; _downState.visible = true; stage.addEventListener(MouseEvent.MOUSE_UP, handlerUp, true); stage.addEventListener(Event.MOUSE_LEAVE, handlerUp, false); } private function handlerUp(event:Event):void { _isDown = false; } private function handlerOver(event:MouseEvent):void { if (_isDown) { handlerDown(null); return; } _upState.visible = false; _overState.visible = true; _downState.visible = false; }
__________________
Reality.getBounds(this); |
|
|||||
|
Цитата:
Ну и я бы вместо _isDown использовал _isOver с проверкой в handlerUp, но это уже предпочтения.
__________________
משיח לא בא משיח גם לא מטלפן |
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Это не должно генерить клик. Более того, не все кнопки показывают состояние down при таком (в 2010 студии - именно так). Как там кнопки реагируют при нажатии/отпускании вне их - волнует только особо упёртых разработчиков интерфейсов =)
PS: пожалуйста, => а то хочется убить...
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. Последний раз редактировалось -De-; 13.11.2011 в 21:14. |
|
|||||
|
Цитата:
Цитата:
Цитата:
__________________
משיח לא בא משיח גם לא מטלפן |
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
alatar, ну кого реально волнует поведение кнопки в ситуациях типа "нажал, отвёл, навёл, отпустил"? Пара раз было, что я нажимал на кнопку, понимал, что это было ошибкой, отводил и отпускал. Всё. В остальных случаях между нажатием и отпусканием всегда курсор на кнопке.
Хотя вообще это мелочь и таки наверное стоит раз сделать чуть заморочившись. Vektor, import flash.display.Stage/flash display.*
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
![]() |
![]() |
Часовой пояс GMT +4, время: 08:35. |
|
|
« Предыдущая тема | Следующая тема » |
|
|