Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Mendikit permintaanAnimationFrame kepada Kadar Bingkai Tertentu?

Bagaimana untuk Mendikit permintaanAnimationFrame kepada Kadar Bingkai Tertentu?

Susan Sarandon
Susan Sarandonasal
2024-10-31 22:03:02324semak imbas

How to Throttle requestAnimationFrame to a Specific Frame Rate?

Permintaan pendikitAnimationFrame kepada Kadar Bingkai Tertentu

permintaanAnimationFrame telah menjadi kaedah pilihan untuk animasi kerana kelancaran dan pengoptimumannya. Walau bagaimanapun, terdapat situasi di mana mengawal kelajuan animasi dikehendaki. Artikel ini membincangkan cara pendikitan requestAnimationFrame kepada kadar bingkai tertentu, memastikan kelajuan animasi yang konsisten tanpa mengira prestasi peranti.

Satu pendekatan untuk pendikitan ialah dengan mengira masa berlalu sejak gelung bingkai terakhir dan hanya melukis apabila FPS yang ditentukan selang telah berlalu. Kaedah ini melibatkan penetapan pembolehubah untuk menjejak selang masa.

<code class="javascript">var fpsInterval = 1000 / fps; // Convert FPS to milliseconds
var then = Date.now(); // Start time of the current animation loop</code>

Gelung animasi dilaksanakan menggunakan requestAnimationFrame dan dipanggil secara berterusan. Dalam gelung, masa berlalu sejak gelung terakhir dikira dan lukisan dilakukan hanya apabila selang FPS yang ditentukan telah berlalu.

<code class="javascript">function animate() {
    requestAnimationFrame(animate);
    now = Date.now();
    elapsed = now - then;
    if (elapsed > fpsInterval) {
        then = now - (elapsed % fpsInterval); // Adjust for non-multiple FPS intervals
        // Put your drawing code here
    }
}</code>

Dengan menggunakan teknik pendikit ini, kod lukisan dilaksanakan pada masa yang ditentukan FPS, memberikan kelajuan animasi yang konsisten walaupun pada peranti dengan keupayaan prestasi yang berbeza-beza.

Atas ialah kandungan terperinci Bagaimana untuk Mendikit permintaanAnimationFrame kepada Kadar Bingkai Tertentu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn