所以我使用setInterval逐步更改页面上的一些基本HTML文本。为简单起见,我们假设它只是一个计数器/闪光灯。是否可以允许用户输入来调整setInterval值的速度?
在下面的代码中,playSpeed保存PlayLife()将在其中执行的值。它的默认值为1500,但我在页面上有一个构造/表单,允许用户递增/递减速度。不幸的是,它不会影响速度。我有一个预感,因为无论playSpeed是什么时候读取setInterval,它的最终并且不会因为你改变playSpeed而改变。如果这是对的,有什么解决方法吗?
谢谢!
var automateLife = setInterval(function(){PlayLife()}, playSpeed);
答案 0 :(得分:4)
您可以改为使用setTimeout
:
function timer() {
PlayLife();
setTimeout(timer, playSpeed);
}
答案 1 :(得分:0)
我猜这就像是一场游戏生活游戏,所以setTimeout
不是你想要的。当playSpeed
发生变化时,您可以像这样重新制作间隔:
clearInterval( automateLife );
automateLife = setInterval(function(){PlayLife()}, playSpeed);
它现在会有新的延迟。这将重置当前计时器,因此如果稍后更新,它将被推回。要“修复”它,你需要有一个更快的间隔并做你自己的时序逻辑(例如每次添加到frame
变量,当它达到你的延迟时,将其重置为0并运行逻辑)< / p>