Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Сделать собственную кнопку (http://www.flasher.ru/forum/showthread.php?t=171265)

Vektor 13.11.2011 11:23

Вложений: 1
Так, мне кажется лучше.
Код AS3:

package {
        import flash.display.MovieClip;
        import flash.events.MouseEvent;
        public class Cbutton extends MovieClip {
                private var _mcButton:mcButton=new mcButton  ;
                      //Здесь из библиотеки можно вытащить другой клип.
                private var _mcButton1:mcButton1=new mcButton1  ;
                public function Cbutton():void {
                        // constructor code
                        fButtonCreate(_mcButton,100,100);
                        fButtonCreate(_mcButton1,200,100);
 
                }
                  private function fButtonCreate(But:MovieClip,x:int,y:int):void {
                        addChild(But);
                        But.stop();
                        But.x=x;
                        But.y=y;
                        this.addEventListener(MouseEvent.MOUSE_OVER, fMouseEvent);
                        this.addEventListener(MouseEvent.MOUSE_OUT, fMouseEvent);
                        this.addEventListener(MouseEvent.MOUSE_DOWN, fMouseEvent);
                        this.addEventListener(MouseEvent.MOUSE_UP, fMouseEvent);
                }
                private function fMouseEvent(event:MouseEvent):void {
                        switch (event.type) {
                                case MouseEvent.MOUSE_OVER :
                                        event.target.gotoAndStop(2);
                                        break;
                                case MouseEvent.MOUSE_OUT :
                                        event.target.gotoAndStop(1);
                                        break;
                                case MouseEvent.MOUSE_DOWN :
                                        event.target.gotoAndStop(3);
                                        break;
                                case MouseEvent.MOUSE_UP :
                                        event.target.gotoAndStop(2);
                                        break;
                        }
                }
        }
}


expl 13.11.2011 14:34

Цитата:

Сообщение от strangedk (Сообщение 1045579)
За то минусы в доступе к instance, видите вон как человек голову ломал))

Простите, а зачем использовать stage?

Кто бы рассказал, как добиться нормального поведения кнопки без stage, например вот этой:
https://github.com/minimalcomps/mini.../PushButton.as

-De- 13.11.2011 14:41

expl, убрать строчки, содержащие stage, в onMouseOut первой строкой вставить onMouseGoUp(null) =)

Wolsh 13.11.2011 15:19

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

noobuser 13.11.2011 15:20

Vektor я уже тут на принцип пошёл и захотел разобраться как делают люди (с использованием Sprite), с мувиклип я бы без заморочек прям на сцене всё нарисовал и слепил бы в один мувик(как делал в большинстве случаев).

Vektor 13.11.2011 15:25

Sprite тот же MovieClip только без кадров.

noobuser 13.11.2011 15:36

ну да, когда с мувиком всё понятно и вроде проще, но все говорят что спрайт это правильно, интересно узнать почему и как оно делается. Да и я кажется понял наконец как сделать "дубляж" нажатия кнопки при нажатии ентера в текстовом поле (эту тему я поднимал, но так и не разобрался). Вроде как достаточно включить buttonMode и выделять в фокус кнопку. С simpleButton этого сделать мне не удалось. Еще не проверял, но документация говорит что должно работать =)

alatar 13.11.2011 15:47

Цитата:

Кто бы рассказал, как добиться нормального поведения кнопки без stage, например вот этой:
Когда кнопке требуется stage, он у нее гарантированно есть.

Добавлено через 2 минуты
Цитата:

Сообщение от Wolsh (Сообщение 1045752)
А вот когда мышь нажали, но увели с кнопки, отображается аут и ап вообще не должен ловиться и обрабатываться - юзер явно передумал делать клик. Поэтому, зачем кнопке стейдж, я так и не понял.

Не совсем, юзер может и вернуть указатель на кнопку. Обычное поведение при этом, прореагировать как будто указатель и не убирали.

Wolsh 13.11.2011 16:18

Цитата:

Не совсем, юзер может и вернуть указатель на кнопку. Обычное поведение при этом, прореагировать как будто указатель и не убирали.
Да без проблем))
Код AS3:

private function handlerOver(event:MouseEvent):void 
{
        if (event.buttonDown)
        {
                handlerDown(null);
                return;
        }
        _upState.visible = false;
        _overState.visible = true;
        _downState.visible = false;
}


alatar 13.11.2011 16:57

Цитата:

Да без проблем))
Нажали в левом месте, перевели курсор на кнопку, отпустили... проблема.


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

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