javascript - Saya membuat permainan kanvas h5, menggunakan requestanimation untuk mengawal pergerakan arah, dan kekunci untuk mengawal sama ada untuk menekan kekunci arah, tetapi ia agak tersekat. Bolehkah anda beritahu saya cara mengoptimumkannya?
过去多啦不再A梦
2017-07-05 10:56:06
Saya tidak boleh menaip kod tertentu Adakah terdapat pakar yang boleh memberikan nasihat berharga
Tukar animasi dalam bingkai kepada animasi dalam masa
Untuk gambar yang tidak perlu ditukar dengan kerap, seperti latar belakang, dsb., sila gunakan kanvas luar skrin
Untuk beberapa butiran, seperti canvas.width, dsb., anda perlu menggunakan width = canvas.width untuk menyimpan nilai
Gunakan pendikit fungsi
Tindakan yang dicetuskan oleh peristiwa tidak seharusnya berdasarkan fungsi terikat Parameter pencetus perlu dihantar ke dalam program dan dilaksanakan melalui gelung permainan. Sebagai contoh: apabila mengklik anak panah kanan, anda hanya perlu memberitahu badan permainan bahawa bergerak ke kanan telah dicetuskan, dan program menentukan cara untuk bergerak.
Optimumkan gelung Secara umumnya, sebab utama program berjalan perlahan adalah ini Terdapat terlalu banyak logik dalaman dan tiada masa untuk memprosesnya dalam gelung unit nombor rawak, dsb., anda boleh lulus Worker digunakan untuk melaksanakannya Untuk beberapa fungsi yang tidak perlu digunakan dengan kerap, sila cuba elakkan memanggilnya Hanya selepas situasi tertentu dicetuskan dan nilai parameter berubah . Sebagai contoh, if(go) dosomething(); hanya beroperasi apabila go adalah benar, yang boleh menjimatkan banyak masa.
Sudah tentu, butiran pengoptimuman khusus perlu ditentukan mengikut kod anda Saya hanya boleh bercakap tentang perkara umum ini, sebenarnya, kebanyakan idea pengoptimuman adalah sama
Mungkin masalah dengan pendaftaran acara Anda boleh mulakan dengan delegasi acara dan membatalkan acara selepas dom selesai.
Anda boleh menggunakan chrome devtool untuk membuka profil dan menyemak cpu dan memori untuk melihat sama ada sebarang fungsi mengalami kebocoran atau masalah lain.
Gunakan penyegaran separa kanvas dan bukannya menyegarkan keseluruhan skrin setiap kali anda mengalihkannya
Adakah anda menulis permainan menggunakan DOM? Atau gunakan CANVAS