我制作了一个带有计时器的记忆游戏,计时器从10分钟开始,每秒倒计时到0.这个函数只调用一次并具有以下setInterval函数:
game.countdown = setInterval(function() {
if(game.timeLeft <= 0){
gameEnded = true;
}
if(!gameEnded){
// lower one second
game.timeLeft--;
var timespan = document.querySelector('.timeleft');
var minutes = pad(Math.floor((game.timeLeft / 60)),2 );
var newSeconds = pad(Math.floor(game.timeLeft - (minutes * 60)),2 );
function pad(num, size) {
var s = num+"";
while (s.length < size) s = "0" + s;
return s;
}
var niceTime = minutes + ":" + newSeconds;
timespan.innerHTML = niceTime;
// Then alter time bar on .innertimer
// Calculate percentage starting at 0%
var percentageDone = (Math.floor((10*60 - game.timeLeft) / (10*60) * 10000) / 100);
$(".timer").css({"background": "-webkit-linear-gradient(left, white " + percentageDone + "%, green " + percentageDone + "%)"});
}
}, 1000);
我将setInterval存储在变量名倒计时的对象游戏中。当游戏结束时,我调用另一个具有clearInterval的函数:
clearInterval(game.countdown);
然后当它进入下一级时,它再次调用setInterval函数并将其再次存储在game.countdown中。但现在每秒需要2秒钟。下一级3秒。你可以看到有多个setInterval正在运行,因为它没有同时完成。
希望有人能真正帮我解决这个问题。
答案 0 :(得分:0)
我为解决这个问题所做的工作如下。如果满足以下条件,则仅调用间隔:
if (undefined == game.countdown){
这样一来,如果有一个倒计时定义,它会再次调用它。由于我将game.timeLeft存储在函数本身中,我只能重新填充game.timeLeft。