Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   реализация двойной кнопки с помощью onMouseDown (http://www.flasher.ru/forum/showthread.php?t=79253)

Alex T 04.05.2006 19:37

реализация двойной кнопки с помощью onMouseDown
 
надо реализовать такую штуку: при нажатии на кнопку она меняет свое визуальное содержимое и функциоальное, при повторном нажатии опять возвращается к предыдущему,
чтобы было понятнее пример: кнопка восроизведение, при нажатии воспроизводится клип и появляется на ее месте кнопка пауза, при нажатии на паузу клип останавливается и появляется опять кнопка воспроизведение (это сторонний пример)
надо сделать с использованием onMouseDown или onMouseUp

Вот мой приблизительный код:
Код:

but2._xscale=0;

but1.onMouseDown=function():Void {
        if(this.hitTest(_root._xmouse,_root._ymouse)){
        but2._xscale=100;
        trace("but1");
        this._xscale=0;}
}

but2.onMouseDown=function():Void {
        if(this.hitTest(_root._xmouse,_root._ymouse)){
        but1._xscale=100;
        trace("but2");
        this._xscale=0;}
}

У меня возникли такие проблемы:
При нажатии на but1 все ок: but1 исчезает, появляется but2 и сообщение "but1"
Далее при нажатии на but2 - but1 не появляется, а появляются сообщения "but2" и "but1" сразу

Догадываюсь, что при втором нажатии срабатывают сразу события but1 и but2...

Подскажите, пожалуйста, как обойти проблему...
И спасибо за проявленное терпение при чтении вопроса...

Madasan 04.05.2006 20:05

Можно поставить флаг, который будет определять, нажималась кнопка уже или нет. Что-то типа того:
Код:

but2._xscale=0;
but1.pressed=false;

but1.onMouseDown=function():Void {
if(this.hitTest(_root._xmouse,_root._ymouse)&&!this.pressed){
this.pressed=true;
this._parent.but2._xscale=100;
trace("but1");
this._xscale=0;}
}

but2.onMouseDown=function():Void {
if(this.hitTest(_root._xmouse,_root._ymouse)){
this._parent.but1.pressed=false;
this._parent.but1._xscale=100;
trace("but2");
this._xscale=0;}
}


Samodelkin 04.05.2006 20:18

можно проще
Код:

but2._xscale = 0;
but1.pressed = false;
but1.onRelease = function():Void  {
        this.pressed = true;
        this._parent.but2._xscale = 100;
        trace("but1");
        this._xscale = 0;
};
but2.onRelease = function():Void  {
        this._parent.but1.pressed = false;
        this._parent.but1._xscale = 100;
        trace("but2");
        this._xscale = 0;
};


Bar_Duck13 04.05.2006 23:56

Вложений: 1
Попробуй вот так. Я для себя бы так сделал.


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

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