0

Javascriptコードでhtmlのオブジェクトを無限に操作できるようにしたいのですが、

でも、使えるsetTimeout("function()", 0)のと使えないのとwhile(1)

:

while: https://gist.github.com/Asoul/e5dd3bd38eef4ca239cb

setTimeout: https://gist.github.com/Asoul/bda34fa2f70e4077ec12

while(1)クロムで動作しない理由がわかりません

SetTimeout場合によっては動作することもありますが、コードに多くのエラーがある場合setTimeoutや不明な理由がある場合は、遅延が発生します。

: http://www.csie.ntu.edu.tw/~b00902036/run_neo/run_neo.html

(上、左、右を使用して再生します。遅延を回避するために一生懸命努力しましたが、それでも発生することがあります。)

キャンバスではなく、純粋な CSS を使用し、ゲームをラグなしでプレイできるようにしたい。

4

1 に答える 1

3

使用できない主な理由whileは、javascript がシングルスレッドであるためです。を使用するwhile(1)と、関数は終了せず、他のすべての対話は凍結されます。

SetTimeout が機能することもありますが、コードに多くの setTimeout がある場合や不明な理由がある場合は、遅延が発生します。

これもjavascriptのシングルスレッドの性質によるもので、完了するまでに時間がかかる関数があるとメインスレッドを独占してしまいます。

ゲームをラグなしでプレイしたい。

すべての関数内で長時間実行される操作を避ける必要があります。それを避けることができない場合は、 を使用setTimeoutして、長時間実行される操作を多くの部分に分割してみてください。たとえば、100 レコードを処理する for ループがある場合、それを 10 回の反復に分割できます。

于 2013-10-06T07:55:08.807 に答える