在可变数量上设置Javascript的setInterval函数 - 可能吗?

时间:2013-03-24 18:42:28

标签: javascript html5 setinterval

所以我使用setInterval逐步更改页面上的一些基本HTML文本。为简单起见,我们假设它只是一个计数器/闪光灯。是否可以允许用户输入来调整setInterval值的速度?

在下面的代码中,playSpeed保存PlayLife()将在其中执行的值。它的默认值为1500,但我在页面上有一个构造/表单,允许用户递增/递减速度。不幸的是,它不会影响速度。我有一个预感,因为无论playSpeed是什么时候读取setInterval,它的最终并且不会因为你改变playSpeed而改变。如果这是对的,有什么解决方法吗?

谢谢!

var automateLife = setInterval(function(){PlayLife()}, playSpeed);

2 个答案:

答案 0 :(得分:4)

您可以改为使用setTimeout

   function timer() {
       PlayLife();
       setTimeout(timer, playSpeed);
   }

答案 1 :(得分:0)

我猜这就像是一场游戏生活游戏,所以setTimeout不是你想要的。当playSpeed发生变化时,您可以像这样重新制作间隔:

clearInterval( automateLife );
automateLife = setInterval(function(){PlayLife()}, playSpeed);

它现在会有新的延迟。这将重置当前计时器,因此如果稍后更新,它将被推回。要“修复”它,你需要有一个更快的间隔并做你自己的时序逻辑(例如每次添加到frame变量,当它达到你的延迟时,将其重置为0并运行逻辑)< / p>