弹出计时器重置的问题

时间:2015-04-23 16:18:04

标签: javascript

这是我第一次使用JavaScript,所以我确信这是一个简单的问题,但我无法弄清楚。基本上,我正在创建一个游戏,我需要添加一个功能,这样如果玩家没有移动20秒,他们会收到提醒。

我让它工作到提示器会在玩家最后一次点击后20秒弹出,但它似乎会不断弹出,无论他们是否在20秒内移动。

这是我的代码:

function UpdateMoveCount() {
  var timer = setInterval(setReminderTimer, 1000);
  var moveReminder = 0;

  function setReminderTimer() {
    if(moveReminder == 20) {
      document.getElementById("move").style.visibility = "visible";  
      clearInterval(timer);
    } else {
      moveReminder++;
    }
  }
}
每次玩家点击时都会调用

UpdateMoveCount()

有人有什么想法吗?

2 个答案:

答案 0 :(得分:1)

这是因为当用户点击时,你使用setInterval但你没有检查用户在点击按钮后是否移动。因此,用户将在点击按钮20秒后弹出 创建一个函数来检查用户是否已移动并在其中使用clearInterval

function UpdateMoveCount() {
var timer = setInterval(setReminderTimer, 1000);
var moveReminder = 0;

function setReminderTimer() {

  if(UserMoved) clearInterval(timer);

  else if(moveReminder == 20) {
     document.getElementById("move").style.visibility = "visible";  
    clearInterval(timer);
    }
   else {
    moveReminder++;
    }
 }
}

答案 1 :(得分:1)

var timer = null;
function UpdateMoveCount() {
  if(timer) clearInterval(timer);
  timer = setInterval(setReminderTimer, 1000);
  var moveReminder = 0;

  function setReminderTimer() {
    if(moveReminder == 20) {
      document.getElementById("move").style.visibility = "visible";  
      clearInterval(timer);
    } else {
      moveReminder++;
    }
  }
}