0

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

在下面的代码中, playSpeed 保存了 PlayLife() 将被执行的值。它的默认值为 1500,但我在页面上有一个构造/表单,允许用户增加/减少速度。不幸的是,它不影响速度。我有一种预感,因为当读取 setInterval 时无论 playSpeed 是什么,它都是最终的,并且不会因为您更改 playSpeed 而改变。如果这是正确的,是否有任何解决方法?

谢谢!

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

2 回答 2

4

您可以setTimeout改用:

   function timer() {
       PlayLife();
       setTimeout(timer, playSpeed);
   }
于 2013-03-24T18:44:12.973 回答
0

我猜这就像一个人生游戏,所以setTimeout不是你想要的。更改时playSpeed,您可以像这样重新设置间隔:

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

它现在将有新的延迟。这将重置当前计时器,因此如果更新很快就会被推迟。要“解决”这个问题,您需要有一个更快的间隔并执行您自己的计时逻辑(例如,frame每次添加到一个变量,当它达到您的延迟时,将其重置为 0 并运行逻辑)

于 2013-03-24T18:47:36.293 回答