如何在几秒钟后停止运行功能? setTimeout,clearTimeout和setInterval无法正常工作

时间:2016-01-29 12:12:09

标签: javascript

所以我要做的是在游戏中停留一段时间后停止一个功能。我有一个基本功能,可以增加游戏中的分数。

      function increaseScore() {
            score = score + 1; // increase score
            display_score.innerHTML = "score is " + score;  // prints new score
        }

我在游戏中多次使用此代码,例如两个圆圈。 红圈......

  if(red_circle == 0) {//stop the incrementing the clicker
      increaseScore();
      red_circle = 1;}

和 绿圈.....

         if(green_circle == 0) {//stop the incrementing the clicker
       increaseScore();
          green_circle = 1;}

我要做的是停止这个增加功能,在两个圆圈上的一定秒数后增加分数。我在4秒后得分后尝试了setTimeout以下增量

 if(red_circle == 0) {//stop the incrementing the clicker
    setTimeout(function() { increaseScore();  
    red_circle = 1;
}, 4000);
}

和clearTimeout不允许分数增加

 if(green_circle == 0) {//stop the incrementing the clicker
    clearTimeout(function() { increaseScore();  
    green_circle = 1;
     }, 3000);
    }

和setInterval()。我的思维过程是错误的吗?提前谢谢

2 个答案:

答案 0 :(得分:1)

如果函数在循环中运行,它可以在循环内部检查它运行了多长时间,如果循环运行的时间太长则会中断循环。如果从外部循环调用该函数,则调用代码可以执行相同的检查。调用者可以记住它开始调用函数的时间并与当前时间进行比较。

var timeStarted = new Date();

// in the loop:
var currentTime = new Date();
if ((currentTime - timeStarted) < 4 * 1000)
{
  // call the function
}

答案 1 :(得分:0)

您似乎没有使用clearTimeout函数。

为了使用clearTimeout,你需要首先从setTimeout函数中获取返回对象。

以下是代码示例:

var myVar;

function myFunction() {
  myVar = setTimeout(function(){ alert("Hello"); }, 3000);
}

function myStopFunction() {
  clearTimeout(myVar);
}

请查看w3schools如何使用这些功能 或在MDN