簡體   English   中英

如何禁用 onkeyup 幾秒鍾

[英]How to disable onkeyup for a few seconds

我正在創建一個瀏覽器游戲,並且我添加了鍵綁定,以便玩家可以使用鍵在世界各地移動。 如果人們使用按鈕移動,這些按鈕會隱藏 5 秒鍾以允許動畫結束。 現在我也想為鍵綁定做這個。 例如:玩家按下空格鍵,將運行一個持續 5 秒的間隔。 再次按下空格會在兩次相同的間隔中出現非常糟糕的故障。 那么如何在調用函數后將其禁用 5 秒以使其不會出現故障?

這是我用於密鑰的代碼:

<script>
            document.body.onkeyup = function(e){
                if(e.keyCode == 32){
                    var cmd = "<?php echo $row['HEADING']; ?>";
                    if(cmd == "N") myMoveUp();
                    if(cmd == "E") myMoveRight();
                    if(cmd == "S") myMoveDown();
                    if(cmd == "W") myMoveLeft();
                }
                if(e.keyCode == 37){
                    ChangeHeadingKP("W");  
                }
                if(e.keyCode == 38){
                    ChangeHeadingKP("N");  
                }
                if(e.keyCode == 39){
                    ChangeHeadingKP("E");  
                }
                if(e.keyCode == 40){
                    ChangeHeadingKP("S");  
                }
            }
            </script>

任何幫助,將不勝感激。

我不會依賴時間(比如 5 秒),因為當你改變它們時,你必須檢查你的代碼。

相反,我依賴於通過調用特定方法來切換標志,如下所示:

keymanager.suspend();
// play animation, cutscene or whatever
keymanager.resume();

這兩個函數以及keymanager很容易定義,如下所示:

var keymanager = {
  "active": true,
  "suspend": () => {
    keymanager.active = false;
  },
  "resume": () => {
    keymanager.active = true;
  }
};

剩下的就是在停用鍵時退出的鍵事件處理程序:

document.body.onkeyup = function (e) {

  if (!keymanager.active)
  {
    return; // do not process any keys
  }

  // rest of your code...
}

暫無
暫無

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

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