用布尔值暂停画布游戏

时间:2016-06-01 10:05:17

标签: javascript html5-canvas

我正在创建HTML5 Canvas游戏,如果按下P键(键码80),游戏将暂停。如果第二次按下该键,游戏将继续。每次按下P键时,是否有一种简单的方法来切换isPaused布尔值?这是我到目前为止的代码:

    var isPaused = false;   

  function checkKey(e, value) {
  var keyID = e.keyCode || e.which;

  if (keyID === 38) { // Up arrow
    player1.isUpKey = value;
    e.preventDefault();
  }
  if (keyID === 80) { 
    isPaused = !isPaused; 
}

}

//游戏循环

    function step() {
      setTimeout(function() {

        if (!isPaused) {  
          update();  // controls character movement
        }  

  draw();
    requestAnimFrame(step);
  }, 30); 
}

非常感谢,

1 个答案:

答案 0 :(得分:1)

您可以使用:

反转布尔值
isPaused = !isPaused;  // ! = NOT which will invert it

同样,您可以使用类似的切换开关将帧速率降低到30 FPS,而不是使用setTimeout

var skipFrame = true;

function step() {
  skipFrame = !skipFrame;
  if (skipFrame || isPaused) {
    requestAnimationFrame(step);
    return
  }

  update();
  requestAnimationFrame(step);
}