Javascript游戏计数器暂停和取消暂停

时间:2014-06-17 09:29:37

标签: javascript counter

我正在为我的学校项目制作游戏,我有这个分数计数器:

function countUp(count)
{
 var div_by = 100,
  speed = Math.round(count / div_by),
  $display = $('.count'),
  run_count = 1,
  int_speed = 24;

var int = setInterval(function() {
if(run_count < div_by){
  $display.text(speed * run_count);
  run_count++;
} else if(parseInt($display.text()) < count) {
  var curr_count = parseInt($display.text()) + 1;
  $display.text(curr_count);
} else {
  clearInterval(int);
}
}, int_speed);
}

countUp(1209);

它有效但我需要在按下左键时暂停计数器,当我按下右键时我需要再次重新启用它,为此我目前使用的是一个案例:

 document.onkeydown = function() {
  switch (window.event.keyCode) {
      case 37:
        myVid.muted=true;
        var div_by = 2445675675457,
        speed = Math.round(count / div_by),
        $display = $('.count'),
        run_count = 1,
        int_speed = 200;

          break;
      case 38:
        myVideo1.play(); 
        myVideo2.play();
        countUp(9999999999999);
          break;
      case 39:
        myVid.muted=false;
        var div_by = 2445675675457,
        speed = Math.round(count / div_by),
        $display = $('.count'),
        run_count = 1,
        int_speed = 9999999999999;
          break;
      case 40:
        myVideo1.pause();
        myVideo2.pause();  
          break;
  }

我怎样才能实现这个目标

1 个答案:

答案 0 :(得分:0)

这是一个非常快速的解决方案。

http://jsfiddle.net/vdgWs/

var isPaused = false;

function countUp(count)
{
  var div_by = 100,
  speed = Math.round(count / div_by),
  $display = $('#count'),
  run_count = 1,
  int_speed = 24;

var int = setInterval(function() {
    if(isPaused)
        return;
    if(run_count < div_by){
      $display.text(speed * run_count);
      run_count++;
    } else if(parseInt($display.text()) < count) {
      var curr_count = parseInt($display.text()) + 1;
      $display.text(curr_count);
    } else {
      clearInterval(int);
    }
    }, int_speed);
}

document.onkeydown = function() {
  switch (window.event.keyCode) {
      case 37:
        isPaused = true;
          break;
  }
}

document.onkeyup = function() {
  switch (window.event.keyCode) {
      case 37:
        isPaused=false;
          break;
  }
}

我没有深入研究你所有的变量,所以我不确定还有什么可以删除,但这是一个解决方案。

问题是你的keydown被击中了,但它对间隔运行的countUp函数没有影响,因为它只影响局部变量,而countUp只使用局部变量..

我添加了一个在keydown上设置并在keyup上取消设置的bool,并在运行时间间隔时检查了这个bool的值。

另外,我将count元素更改为ID而不是类。当只有一个这个项时使用ID,如果有很多则使用class。