cari

Rumah  >  Soal Jawab  >  teks badan

Bagaimanakah requestAnimationFrame mengawal kadar bingkai?

Saya ingin melaksanakan animasi dalam kanvas Setiap bingkai animasi dilukis pada Sprite dan disambungkan ke dalam satu gambar. Saya cuba menggunakan setTimeout untuk melaksanakan animasi dan mendapati bahawa bingkai itu akan melangkau lakukan jika saya ingin melukis 7 bingkai dalam 1s?

仅有的幸福仅有的幸福2826 hari yang lalu788

membalas semua(3)saya akan balas

  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-16 13:46:28

    requestAnimationFrame dipanggil apabila penyemak imbas memaparkan bingkai seterusnya, jadi boleh dianggap bahawa kadar panggilan requestAnimationFrame ialah kadar muat semula penyemak imbas, yang biasanya 60 bingkai

    Tetapi apabila requestAnimationFrame memanggil panggilan balik, parameter cap masa akan dihantar masuk. Anda boleh menilai berdasarkan parameter ini untuk memproses kadar bingkai yang sebenarnya anda perlukan

    Sebagai contoh, jika anda mahu 7 bingkai sesaat, anda boleh menulisnya seperti ini

    let step = (timestamp, elapsed) => {
        if (elapsed > 1000 / 7) {
            //TO DO SOMETHING
            elapsed = 0
        }
        
        window.requestAnimationFrame(
            _timestamp => step(_timestamp, elapsed + _timestamp - timestamp)
        )
    }
    window.requestAnimationFrame(timestamp => step(timestamp, 0))

    balas
    0
  • PHP中文网

    PHP中文网2017-05-16 13:46:28

    Nampak tak terkawal, pelayar mengira sendiri

    balas
    0
  • 迷茫

    迷茫2017-05-16 13:46:28

    Kadar penyegaran 1s7 bingkai...pada asasnya adalah kesan daripada "melangkau bingkai"...

    balas
    0
  • Batalbalas