0

左矢印と右矢印のキーリスナーを持つ非常に単純なゲームをいじっています。

スペースバーでゲームを一時停止するとき、ゲームが一時停止している間、それらのリスナーが何もしないようにします。これを一時停止機能に実装したり、キーリスナーがスペースバーを聞いたときに実装したりできると考えていました。私はこれに比較的慣れておらず、これを行う方法がわかりません。

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;
   }
}
4

3 に答える 3

0

または、キーリスナーのスタックを維持することを検討することもできます。スペースバーは新しいキーリスナーをスタックにプッシュし、対応するメニューオプションはそれをポップオフし、ゲームループは一番上のリスナーのみを更新します。

于 2012-10-10T18:10:58.947 に答える
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';
   }
于 2012-10-10T17:23:21.650 に答える