AS3:一个键中有多个选项,可防止多次按键

时间:2013-11-29 09:53:28

标签: actionscript-3

我的AS3代码中有一个“暂停功能”,问题是我无法找到必要的逻辑来给字母“P”提供暂停和取消暂停的能力,同时限制按下次数一次一个。到目前为止我的代码(工作,是的,但没有“一次按一次”限制)。

    public function PauseDown(event:KeyboardEvent):void
    {
        if (event.keyCode == Keyboard.P)
        {
            pause = true;
            trace ("apreté pausa");
            pausa();
        }
    }
    public function pausa():void 
    {
        trace ("pausa");
        if (pause == true && paused == false)
        {
            paused = true;
            backgroundLvL1.removeEventListener(Event.ENTER_FRAME,update);
        }
        else if(pause == true && paused == true)
        {
            paused = false;
            backgroundLvL1.addEventListener(Event.ENTER_FRAME,update);
        }
    }

1 个答案:

答案 0 :(得分:0)

你的'PauseDown'函数应该被称为其他函数,因为只要按下任何键就会调用它;像'keyPressed'这样的东西可能更具描述性。

如果您只想确认一个键是最近按下的键,我会将一个变量(例如_currentKeyCode)设置为'keyPressed'函数中的event.keyCode。然后,在您的游戏循环功能中,您可以检查_currentKeyCode的值并让游戏做出相应的响应。

在'keyPressed'功能中,您还可以包含测试以查看是否已按下'P' 请注意,您还应该在KeyBoardEvent.KEY_UP事件上触发'keyReleased'函数。这可以检查_currentKeyCode == event.keyCode,如果是,则将_currentKeyCode设置为-1。然后,在你的游戏循环中,-1表示没有按键。

最后一点,无关紧要的事情:在'pausa'函数中你不需要检查'pause == true',因为pausa函数只在pause == true时被调用。