[英]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.