0

そのため、setIntervalを使用して、ページ上の基本的なHTMLテキストを段階的に変更しています。簡単にするために、それが単なるカウンター/ブリンカーであるとしましょう。ユーザー入力でsetInterval値の速度を調整できるようにすることは可能ですか?

以下のコードでは、playSpeedはPlayLife()が実行される値を保持しています。デフォルトの値は1500ですが、ユーザーが速度をインクリメント/デクリメントできるようにする構成/フォームがページにあります。残念ながら、速度には影響しません。setIntervalが読み取られたときのplaySpeedが何であれ、そのfinalであり、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 に答える