动作3:如何及时检测按钮何时被按下?

时间:2014-11-11 22:55:22

标签: actionscript-3

好的,这是我正在制作的游戏的另一个问题。我正在整理第二级,你需要在合适的时间按下一长串键。过早或过晚按下它们会导致失败。我需要知道的是如何检测按键ISN按下的时间,应该是什么时候按下的。这就是我到目前为止所做的:

var count3:Number = 23;
var myTimer3:Timer = new Timer(1000, count3);
var timeLeft3:Number = count3;
var buttonPressed:Boolean = false;
var btnCounter:Number = 2;
var btnTimer:Timer = new Timer(1000, btnCounter);

myTimer3.addEventListener(TimerEvent.TIMER, countdown3);
myTimer3.start();
btnTimer.addEventListener(TimerEvent.TIMER, btnCountdown);

btn1.addEventListener(MouseEvent.CLICK, buttonPress);

btn1.visible = false;
btn2.visible = false;
btn3.visible = false;
btn4.visible = false;
btn5.visible = false;
btn6.visible = false;
btn7.visible = false;
btn8.visible = false;
btn9.visible = false;

function countdown3(event:TimerEvent): void {

    if (((count3)-myTimer3.currentCount)==20) {
        btn1.visible = true;
        btnTimer.start();
    } else if (((count3)-myTimer3.currentCount)==19) {
        btn1.visible = true;
    } else {
        btn1.visible = false;
    }
}

function btnCountdown(event:TimerEvent):void {
    if (((btnCounter)-btnTimer.currentCount)==0) {
        if (buttonPressed = true) {
            btnTimer.stop();
        } else {
            gotoAndStop(2);
        }
    }
}

function buttonPress (event:MouseEvent): void {
    buttonPressed = true;
}

出于某种原因,当btnCounter达到0时,它不会做任何事情。如果有人可以帮我解决这个问题,那就太棒了。感谢。

N.B。这是一个个人项目,我只是在学习动作脚本

1 个答案:

答案 0 :(得分:0)

在按下按钮时启动计时器(例如,如果必须在2秒内按下按钮,则将计时器的间隔设置为2秒)。

然后创建一个全局Boolean变量(或类成员变量,但是您的场景已设置)并最初将其设置为false。按下按钮时,将此变量设置为true并禁用计时器。

如果计时器触发并且此变量为false,则表示该按钮未被禁用,因此用户未在2秒内点击该按钮。

不要使用非常短的时间 - 定时器不是很准确,处理器速度可能会影响它们的持续时间。 (人类的反应时间不谈。)