2

HTML5のキャンバスをいじってみることにしました。もちろん、それは私がポンゲームを書いてみることを意味します。現在、フレームレートを制限する方法を見つけようとしています。これは他の言語ではかなり簡単ですが、Javascriptで実行を遅らせる方法を見つけるのは少し難しいようです。

これが私がこれまでに持っているものです:

while(true) {
    var begin = (new Date()).getTime();

    //Draw stuff to the canvas

    var end = (new Date()).getTime();
    if ((end-begin) < 33.333 ) {
        //delay (1000/(30-(end-begin)))
    }
}

明らかに、各javascriptエンジンのパフォーマンスによってフレームレートは大きく異なりますが、最大フレームレートを30FPSに制限したいと思います。setTimeout()がこのタスクをどのように実行するかは実際にはわかりません。これを行うための最良の方法は何でしょうか?

4

1 に答える 1

7

JavaScript にはdelay/がありません。特定の時間が経過した後に関数を呼び出すwaitなどの関数を使用できます。例:window.setTimeout

window.setTimeout(function() {
    // do something interesting
}, 2000 /* but after 2000 ms */);

または、33 ミリ秒 (~30 fps) ごとにフレームをペイントしたい場合は、次のようにコーディングします。

window.setInterval(function() {
    // paint my frame 
}, 33);
于 2012-12-21T17:56:51.793 に答える