Форум 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=137600)

firuz 17.03.2010 18:49

проверки нажатой кнопки
 
Есть у меня анимированые кнопки. Как осуществить проверку нажатой кнопки и, если она нажата, то повторно при нажатии ничего не делать?

КорДум 17.03.2010 19:04

Флагами. Если нажата - переменная нажата = true

firuz 17.03.2010 21:00

можно подробней? я пока не очень силен в AS

приложу код кнопочек

Код AS3:

menuAnima.btn_1.buttonMode = true;
menuAnima.btn_2.buttonMode = true;
 
menuAnima.btn_1.addEventListener(MouseEvent.ROLL_OVER, onButtonOver);
menuAnima.btn_1.addEventListener(MouseEvent.ROLL_OUT, onButtonOut);
menuAnima.btn_1.addEventListener(MouseEvent.CLICK, play_1);
 
menuAnima.btn_2.addEventListener(MouseEvent.ROLL_OVER, onButtonOver);
menuAnima.btn_2.addEventListener(MouseEvent.ROLL_OUT, onButtonOut);
menuAnima.btn_2.addEventListener(MouseEvent.CLICK, play_2);
 
function onButtonOver(e:MouseEvent):void
{
        e.currentTarget.gotoAndPlay("over");
}
 
function onButtonOut(e:MouseEvent):void
{
        e.currentTarget.gotoAndPlay("out");
}
 
 
function play_1(e:Event):void {
        menuAnima.block.play();
        1mc.play()
}
 
function play_2(e:Event):void {
        menuAnima.block.play();
        2mc.play();
 
}
 
stop();

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

Cornford 17.03.2010 21:10

как- то так:
Код AS3:

var clickBtn:Boolean;
.....
function play_1(e:Event):void {
 if (clickBtn==false){
        clickBtn=true;
        menuAnima.block.play();
        1.play()}
else
{trace ("no click")}
}
 
.....

возможны ошибки.)

firuz 17.03.2010 21:25

А объявить
Код AS3:

clickBtn==false

я могу в любом удобном мне месте?

Например внутри какого-то клипа в определенном кадре просто написать clickBtn==false?

Cornford 17.03.2010 21:31

ну во первых тогда надо написать:
Код AS3:

public var clickBtn:Boolean;


expl 17.03.2010 21:46

Вложений: 1
да напишите себе клас с методом
Код AS3:

public static function isDown(keyCode:Int):Boolean

который будет слидить за нажатием-отжатием, что думать в удобном месте - неудобном размещать clickBnt = false?
Его правда в начале придется проинициализировать каким-нибудь дисплей-объектом, чтобы мог нажатия клавиш слушать

Аналог на haXe:Вложение 24041

mickfallout 17.03.2010 21:47

Цитата:

Сообщение от firuz (Сообщение 893782)

Например внутри какого-то клипа в определенном кадре просто написать

В AS3 не пишут код в кадрах. Советую прочитать книжку Action Script 3.0 для Flash(автор - Колин Мук).

firuz 17.03.2010 21:47

ну ведь мне понадобится ее когда-то нажать еще. Вот и надо будет clickBtn обратить в false обратно? Я правильно понял?

Код AS3:

public var clickBtn:Boolean;
.....
function play_1(e:Event):void {
 if (clickBtn==false){
        clickBtn=true;
        menuAnima.block.play();
        1.play()}
else
{trace ("no click")}
}
 
.....

И для каждой кнопки эта clickBtn будет своя? Если, например, кнопок у меня 6 на самом деле

expl 17.03.2010 21:56

Да, своя, поэтому придется юзать хеш:
Код AS3:

_isButtonDown = {}
...
_isButtonDown[keyKode] = true;
...
if (_isButtonDown[keyKode])
{
    ....
}
...
delete _isButtonDown[keyKode]



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

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