首页 > 解决方案 > 如何暂时停止事件keydown监听器?

问题描述

我的问题是:创建新圆圈后,它仍然快速动画(减少变量动画没有帮助)-> 如何在发生碰撞后临时杀死 keydown 事件侦听器,以使新圆圈的速度不受空格键的影响第一届会议?

我正在尝试使用画布和 javascript 制作简单的 game2d。

由于按下空格键,圆圈应该移动得更快(增加动画功能的变量)。但是如果与墙壁发生碰撞,则应该是游戏结束,那么应该创建新的圆圈。这实际上正在发生。

move(event) {
  if (event.keyCode === 65 ) { //left
    this.cir.x -= 1 
  } else if (event.keyCode === 68 ) { //right
    this.cir.x += 1
  } else if (event.keyCode === 83 ) { //down
    if(cir.coll){
      this.cir = new cir(1,0);
    } 
    this.cir.x+= 1
  } else if (event.key == ' ' ) { // spacebar button
    this.dropInterval = 1 
    if(cir.coll){
      this.cir = new cir(1,0) **// for new circle spacebar keydown should be killed temporary so that i should press it again for the new object**
    }
  }
}

标签: javascripthtmlnode.jsanimation2d-games

解决方案


如果您只想停止触发空格键 keydown 事件,您可以尝试创建一个布尔值,如“canPressSpace”,当圆圈与墙壁碰撞时,您调用一个函数将此布尔值设置为 false 一段有限的时间或直到某个其他事件将其重新触发。

在空格键 keydown 事件上,只需添加一个if (canPressSpace)验证。

我不确定这是否会解决您的动画问题,但它应该暂时停止空格键 keydown 事件功能。


推荐阅读