游戏暂停关闭了一个关键的监听器功能

时间:2012-10-10 17:20:59

标签: javascript events key

我正在搞一个非常简单的游戏,左右箭头都有一个关键的监听器。

当我用空格键暂停游戏时,我希望那些听众在游戏暂停时什么都不做。我想我可以将它实现到暂停功能中,或者当键监听器听到空格键时。我对此比较陌生,只是简单地不知道如何做到这一点。

function keyListener(e){
   if(!e){
      //for IE
      e = window.event;
   }
   if(e.keyCode==37 && paddleLeft > 0){
      //keyCode 37 is left arrow
      paddleLeft -= 25;
      paddle.style.left = paddleLeft + 'px';
   }
   if(e.keyCode==39 && paddleLeft < 925){
      //keyCode 39 is right arrow
      paddleLeft += 25;
      paddle.style.left = paddleLeft + 'px';
   }
   if(e.keyCode==32){
      pause();
   }
}

这是暂停功能:

function pause(){
   if(!gamePaused){
      timer = clearTimeout(timer);
      gamePaused = true;
   } else if(gamePaused) {
      timer = setTimeout(start(),1000/50);
      gamePaused = false;
   }
}

3 个答案:

答案 0 :(得分:0)

if(e.keyCode==37 && paddleLeft > 0 && !gamePaused){
      //keyCode 37 is left arrow
      paddleLeft -= 25;
      paddle.style.left = paddleLeft + 'px';
   }
   if(e.keyCode==39 && paddleLeft < 925 && !gamePaused){
      //keyCode 39 is right arrow
      paddleLeft += 25;
      paddle.style.left = paddleLeft + 'px';
   }

答案 1 :(得分:0)

只需在左/右ifs中添加!gamePaused 条件。

如果您禁用keyListener,则无法再取消暂停游戏。

答案 2 :(得分:0)

或者,您可能需要考虑维护一堆关键侦听器。空格键会将一个新的键监听器推入堆栈,相应的菜单选项会将其弹出,游戏循环只会更新顶部的监听器。