簡體   English   中英

AS3:一個鍵具有多個選項,可防止多次按下

[英]AS3: Multiple options in one key and preventing multiple key presses

我的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);
        }
    }

您的“ PauseDown”函數可能應該調用其他名稱,因為只要按下ANY鍵,就會調用該函數。 像“ keyPressed”之類的東西可能更具描述性。

如果您只想將一個鍵確認為最近按下的鍵,則可以在“ keyPressed”功能的event.keyCode中設置一個變量(例如_currentKeyCode)。 然后,在游戲循環功能中,您可以檢查_currentKeyCode的值並使游戲做出相應的響應。

在“ keyPressed”功能中,您還可以包含測試以查看是否已按下“ P”。
請注意,您還應該具有在KeyBoardEvent.KEY_UP事件上觸發的“ keyReleased”功能。 這可以檢查_currentKeyCode == event.keyCode,如果是,則將_currentKeyCode設置為-1。 然后,在游戲循環中,-1表示沒有按鍵。

最后,一點無關緊要的事情是:在“ pausa”函數中,您無需檢查“ pause == true”是否成立,因為只有在pause == true時才調用pausa函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM