在javascript游戏上添加暂停功能时遇到问题

时间:2016-01-05 04:23:47

标签: javascript html5 canvas event-listener

我正在试图弄清楚当页面加载游戏时“暂停”并且用户必须按Enter键进行游戏以及当用户这样做时游戏开始。

以下是当游戏处于活动状态时控制玩家的当前关键状态。我觉得我几乎就在那里(如果我错了,请纠正我),但是当页面加载时我无法得到画布“暂停”的原因以及当输入按钮是如何让它“播放”时推压。

keystate = {};
  document.addEventListener('enter', function(evt){
    keystate[evt.keyCode] = true;
  });
  document.addEventListener('keydown', function(evt){
    keystate[evt.keyCode] = true;
  });
  document.addEventListener('keyup', function(evt){
    delete keystate[evt.keyCode];
  });

1 个答案:

答案 0 :(得分:0)

我有两种方式,

  • 一个简单但不太好的

  • 一个人很难,可以很好

  

第一个问题就是用comfirm(text)警告某些内容。

以下是这种方式的代码:

var gameBrightness = 10; 

function pause() {
    var pause = confirm("You paused the game, click 'OK' to continue your game and the other button to go to options"); 
      
    if (pause == false) { //Didn't click on OK
      var options = confirm("Click on 'Ok' to not change brigthness, but the other one to change the brightness to a random value");
      
      if (options == true) { //Clicked on OK
         ReDopause();
         return;
      }
      else { //Didn't click on OK
         brightness = Math.floor(Math.random() * 20);
         document.getElementById("brightness").innerHTML = brightness;
         ReDopause();
         return;
      }
    }
 }

 var ReDopause = function() {
    pause(); 
 }
<button onclick="pause()">Pause</button>
<span id="brightness">brigthness : 10</span>

我没有做出的第二种方式,但是在每个动作或定时器中添加if的声明。像这样:

var pause = false;
setInerval(tick, 100);

function tick() {
  if (pause == false) {
     ....
  }
}

在bginnning你应该有一个不可见的画布,这是暂停菜单。哇,你为此做了CSS:

#pause {
  display: none;
  ...
}

当您暂停将pause设置为true时,将主画布设置为document.getElementById("mainCanvas").style.display = "none"这将使画布消失,但仍然包含所有图纸。然后像这样显示pause画布:document.getElementById("mainCanvas").style.display = "initial"。单击“继续”时:将暂停设置为false,与此相反。