Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Вопрос о SimpleButton (http://www.flasher.ru/forum/showthread.php?t=176684)

Feigi 15.03.2012 15:15

Вопрос о SimpleButton
 
Подскажите как решить проблемку с SimpleButton. У меня есть кнопка, после её нажатия- убираю её с экрана (временно). Вывожу её вновь на экран (addChild(b)). Она проявляется вположении, как будто над ней мышь (over) (типа запомнила что была в состоянии over перед тем как мы её убрали с экрана) . Это баг во флеш?
Это можно легко обойти делая каждый раз new b, но это ведь не дело.

Inet_PC 15.03.2012 15:28

Мягко говоря SimpleButton тоже не дело, напишите свою кнопку у которой нет этого недостатка. Или используйте уже готовую.

Feigi 15.03.2012 16:03

Если это не дело, тогда для чего существует SimpleButton?
А мне кажется, что писать по-крайней мере 2 ивента для каждой простенькой кнопки- это не дело. СПросила простой вопрос- есть ли такой баг во флеш? (похоже что да)

Inet_PC 15.03.2012 16:12

Вот аналогичная проблема с решением.
Цитата:

А мне кажется, что писать по-крайней мере 2 ивента для каждой простенькой кнопки - это не дело.
А Вы думаете, что в SimpleButton это как то по другому сделано? Не нужно каждый раз писать, нужно один раз написать класс вместо SimpleButton и использовать его.

Wolsh 15.03.2012 16:13

http://flasher.ru/forum/showthread.php?t=171984
Опоздал))
И не проблема, а решение от уважаемого Силина))

Feigi 15.03.2012 17:28

Понимаю, что в SimpleButton , который автоматически генерируется, есть готовый код. И по-ходу в нём есть баг. Как вам такой вариант:


Код AS3:

 package{
        import flash.display.MovieClip;
        import flash.events.MouseEvent;
 
        public class Improved_button{
                private var img:MovieClip;
                private var over:Function;
                public function Improved_button(img:MovieClip,up:Function,over_:Function=null){
                        this.img=img;
                        if (over_ != null) {
                                this.over=over;
                        } else {
                                this.over=over_defualt;
                        }
                        img.addEventListener(MouseEvent.MOUSE_OVER,over,false,0,true);
                        img.addEventListener(MouseEvent.MOUSE_UP,up,false,0,true);
                }
 
                private function over_defualt(event:MouseEvent):void {
                        img.alpha=0.5;
                        img.addEventListener(MouseEvent.MOUSE_OUT,restore,false,0,true);
                }
                private function restore(event:MouseEvent):void {
                        img.alpha=1;
                }
        }
}



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

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