我正在尝试创建一个简单的游戏:www.aimbooster.com来测试我的javascript知识,但我遇到了一个问题。基本上我想要一个计时器来计算用户获得的时间,但是我不能使用setInterval方法,因为那时程序必须等待一整秒才能发生其他事情,这不是我想要的。我想要的是这个计时器进程在后台运行。我认为这通常被称为"线程"。我怎么会这样呢?我想要的东西是:
function startTimer() {
while (stop == false) {
setInterval(function() {time++};1000);
}
}
function startGame() {
startTimer();
//MY GAME STARTS HERE
}
如果我现在这样做,startTimer功能将不断进行,我无法做任何其他事情。我希望startTimer是一个子进程,而主进程是游戏。
答案 0 :(得分:1)
while (stop === false) {
setInterval(function() {time++};1000);
}
这是一个无限循环,你正在调用setInterval无限时间,而eventloop
没有机会将回调弹出到堆栈以增加时间变量。
我想保存timer变量,并使用clearInterval来停止计时器
function Game() {
}
Game.prototype.start = function() {
this.timer = setInterval(function() {
// do your stuff
}, 1000);
// start game
}
Game.prototype.stop = function() {
clearInterval(this.timer);
}
答案 1 :(得分:-1)
您可以执行以下操作:
function startTimer() {
setInterval(function() {while (stop == false) time++}, 1000);
}