如何在Javascript中防止长按操作?

3
我正在制作一个HTML5游戏。当用户按下这个键(假设是z)时,角色会攻击。然而,在我目前的代码中,用户可以一直按住z键,使角色无限攻击。
我需要实现一个代码来防止这种“长按”发生。换句话说,如果用户一直按住z键,角色最终会停止攻击,因此用户必须不断点击z键,而不能只是按住键不放。

4
改用keyup事件? - tanmay
2
在编程中,您可以使用 keydown。在这种情况下,用户必须一遍又一遍地按键。 - warl0ck
8
请展示你当前的代码,说明如何捕获按键事件。最好能够提供一个最小可重现代码示例(MCVE)。我会为你翻译。 - Jon P
2个回答

3

你可以实现一个标志(flag),它只会触发一次,除非被重置(reset)。

var pressed = false;
window.addEventListener("keydown", ()=>{
  if(!pressed){
   pressed = true;
   //Do thing
  }
}

window.addEventListener("keyup", ()=>{
 pressed = false;
}

-2
如果您正在使用“keypress”或“keydown”事件,请尝试改用“keyup”事件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接