Rumah hujung hadapan web tutorial js Analisis ringkas tentang prinsip pelaksanaan kemahiran animasi_javascript Javascript

Analisis ringkas tentang prinsip pelaksanaan kemahiran animasi_javascript Javascript

May 16, 2016 pm 04:11 PM
javascript animasi Prinsip pelaksanaan

Andaikan terdapat keperluan fungsi animasi sedemikian: tukar lebar div daripada 100px kepada 200px. Kod yang ditulis mungkin kelihatan seperti ini:

Salin kod Kod adalah seperti berikut:


fungsi animate1(elemen, endValue, tempoh) {
var startTime = new Date(),
         startValue = parseInt(element.style.width),
         langkah = 1;
 
var timerId = setInterval(function() {
        var nextValue = parseInt(element.style.width) langkah;
          element.style.width = nextValue 'px';
Jika (NextValue >= endValue) {
               clear Interval(timerId);
// Ia mengambil masa untuk memaparkan animasi
                element.innerHTML = Tarikh baharu - Masa mula;
}
}, tempoh / (endValue - startValue) * langkah);
}

animate1(document.getElementById('test1'), 200, 1000);


Prinsipnya adalah untuk meningkatkan 1px pada selang masa yang tetap sehingga mencapai 200px. Walau bagaimanapun, masa paparan selepas animasi tamat adalah lebih daripada 1s (biasanya kira-kira 1.5s). Sebabnya ialah setInterval tidak menjamin selang pelaksanaan.

Adakah cara yang lebih baik? Mari kita lihat masalah matematik sekolah rendah:

Salin kod Kod adalah seperti berikut:

Bangunan A dan Bangunan B berjarak 100 meter Seorang berjalan dari Bangunan A ke Bangunan B dengan kelajuan tetap dan berjalan selama 5 minit untuk sampai ke destinasi Berapa jauh dia dari Bangunan A pada minit ketiga.

Formula pengiraan untuk mengira jarak pada momen tertentu dalam gerakan seragam ialah: jarak * masa / masa semasa. Jadi jawapannya hendaklah 100 * 3 / 5 = 60 .

Inspirasi yang dibawakan oleh soalan ini ialah jarak pada saat tertentu boleh dikira melalui formula tertentu. Dengan cara yang sama, nilai pada masa tertentu semasa proses animasi juga boleh dikira melalui formula dan bukannya terkumpul:

Salin kod Kod adalah seperti berikut:


fungsi animate2(elemen, endValue, tempoh) {
var startTime = new Date(),
         startValue = parseInt(element.style.width);

var timerId = setInterval(function() {
      peratusan var = (Tarikh baharu - Masa mula) / tempoh;

var stepValue = startValue (endValue - startValue) * peratusan;
          element.style.width = stepValue 'px';

jika (peratusan >= 1) {
               clear Interval(timerId);
                element.innerHTML = Tarikh baharu - Masa mula;
}
}, 13);
}

animate2(document.getElementById('test2'), 200, 1000);

Selepas penambahbaikan ini, anda dapat melihat bahawa masa pelaksanaan animasi hanya akan mempunyai ralat paling banyak 10 ms. Tetapi masalahnya belum selesai sepenuhnya. Memeriksa elemen test2 dalam alat pembangunan penyemak imbas menunjukkan bahawa lebar akhir test2 mungkin lebih daripada 200px. Pemeriksaan teliti kod fungsi animate2 mendedahkan:

Nilai 1.peratusan mungkin lebih besar daripada 1, yang boleh diselesaikan dengan mengehadkan nilai maksimum melalui Math.min.
2. Walaupun ia dijamin bahawa nilai peratusan tidak lebih daripada 1, selagi endValue atau startValue ialah perpuluhan, nilai (endValue - startValue) * peratusan mungkin masih menghasilkan ralat kerana ketepatan operasi perpuluhan Javascript adalah tak cukup. Sebenarnya, apa yang kita ingin pastikan ialah ketepatan nilai akhir, jadi apabila peratusannya adalah 1, gunakan sahaja endValue secara langsung.

Jadi, kod fungsi animate2 diubah suai kepada:

Salin kod Kod adalah seperti berikut:

fungsi animate2(elemen, endValue, tempoh) {
var startTime = new Date(),
         startValue = parseInt(element.style.width);

var timerId = setInterval(function() {
​​ // Pastikan peratusan tidak melebihi 1
      peratusan var = Math.min(1, (Tarikh baharu - Masa mula) / tempoh);

var stepValue;
Jika (peratusan >= 1) {
​​​​​​ // Pastikan ketepatan nilai akhir
             stepValue = endValue;
         } lain {
             stepValue = startValue (endValue - startValue) * peratusan;
}
          element.style.width = stepValue 'px';

jika (peratusan >= 1) {
               clear Interval(timerId);
                element.innerHTML = Tarikh baharu - Masa mula;
}
}, 13);
}

Terdapat satu soalan terakhir: Mengapa selang setInterval ditetapkan kepada 13ms? Sebabnya ialah kadar penyegaran semula monitor semasa secara amnya tidak melebihi 75Hz (iaitu, disegarkan 75 kali sesaat, iaitu, disegarkan setiap kira-kira 13ms. Adalah lebih baik untuk menyegerakkan selang dengan kadar penyegaran).

Kenyataan Laman Web ini
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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Animasi tidak berfungsi dalam PowerPoint [Tetap] Animasi tidak berfungsi dalam PowerPoint [Tetap] Feb 19, 2024 am 11:12 AM

Adakah anda cuba membuat persembahan tetapi tidak boleh menambah animasi? Jika animasi tidak berfungsi dalam PowerPoint pada PC Windows anda, maka artikel ini akan membantu anda. Ini adalah masalah biasa yang dikeluhkan oleh ramai orang. Contohnya, animasi mungkin berhenti berfungsi semasa pembentangan dalam Microsoft Teams atau semasa rakaman skrin. Dalam panduan ini, kami akan meneroka pelbagai teknik penyelesaian masalah untuk membantu anda membetulkan animasi yang tidak berfungsi dalam PowerPoint pada Windows. Mengapa animasi PowerPoint saya tidak berfungsi? Kami mendapati bahawa beberapa sebab yang mungkin menyebabkan animasi dalam PowerPoint tidak berfungsi pada Windows adalah seperti berikut: Disebabkan oleh peribadi

Bagaimana untuk menyediakan animasi ppt untuk masuk dahulu dan kemudian keluar Bagaimana untuk menyediakan animasi ppt untuk masuk dahulu dan kemudian keluar Mar 20, 2024 am 09:30 AM

Kami sering menggunakan ppt dalam kerja harian kami, jadi adakah anda biasa dengan setiap fungsi operasi dalam ppt? Contohnya: Bagaimana untuk menetapkan kesan animasi dalam ppt, bagaimana untuk menetapkan kesan pensuisan, dan apakah tempoh kesan setiap animasi? Bolehkah setiap slaid bermain secara automatik, masuk dan kemudian keluar dari animasi ppt, dan lain-lain. Dalam isu ini, saya akan berkongsi dengan anda langkah-langkah khusus untuk memasuki dan kemudian keluar dari animasi ppt. Kawan, datang dan lihat. Lihatlah! 1. Mula-mula, kita buka ppt pada komputer, klik di luar kotak teks untuk memilih kotak teks (seperti yang ditunjukkan dalam bulatan merah dalam rajah di bawah). 2. Kemudian, klik [Animasi] dalam bar menu dan pilih kesan [Padam] (seperti yang ditunjukkan dalam bulatan merah dalam rajah). 3. Seterusnya, klik [

WebSocket dan JavaScript: teknologi utama untuk melaksanakan sistem pemantauan masa nyata WebSocket dan JavaScript: teknologi utama untuk melaksanakan sistem pemantauan masa nyata Dec 17, 2023 pm 05:30 PM

WebSocket dan JavaScript: Teknologi utama untuk merealisasikan sistem pemantauan masa nyata Pengenalan: Dengan perkembangan pesat teknologi Internet, sistem pemantauan masa nyata telah digunakan secara meluas dalam pelbagai bidang. Salah satu teknologi utama untuk mencapai pemantauan masa nyata ialah gabungan WebSocket dan JavaScript. Artikel ini akan memperkenalkan aplikasi WebSocket dan JavaScript dalam sistem pemantauan masa nyata, memberikan contoh kod dan menerangkan prinsip pelaksanaannya secara terperinci. 1. Teknologi WebSocket

Selepas penangguhan selama dua tahun, filem animasi 3D domestik 'Er Lang Shen: The Deep Sea Dragon' dijadualkan ditayangkan pada 13 Julai. Selepas penangguhan selama dua tahun, filem animasi 3D domestik 'Er Lang Shen: The Deep Sea Dragon' dijadualkan ditayangkan pada 13 Julai. Jan 26, 2024 am 09:42 AM

Laman web ini melaporkan pada 26 Januari bahawa filem animasi 3D domestik "Er Lang Shen: The Deep Sea Dragon" mengeluarkan satu set gambar pegun terbaharu dan secara rasmi mengumumkan bahawa ia akan dikeluarkan pada 13 Julai. Difahamkan bahawa "Er Lang Shen: The Deep Sea Dragon" diterbitkan oleh Mihuxing (Beijing) Animation Co., Ltd., Horgos Zhonghe Qiancheng Film Co., Ltd., Zhejiang Hengdian Film Co., Ltd., Zhejiang Gongying Film Co., Ltd., Chengdu Filem animasi terbitan Tianhuo Technology Co., Ltd. dan Huawen Image (Beijing) Film Co., Ltd. dan diarahkan oleh Wang Jun pada asalnya dijadualkan ditayangkan di tanah besar China pada 22 Julai 2022 . Sinopsis plot laman web ini: Selepas Pertempuran Dewa Yang Dikurniakan, Jiang Ziya mengambil "Senarai Tuhan Yang Dikurniakan" untuk membahagikan tuhan, dan kemudian Senarai Tuhan Yang Dikurniakan dimeterai oleh Mahkamah Syurga di bawah laut dalam Kyushu Alam Rahsia. Malah, selain menganugerahkan kedudukan ilahi, terdapat juga banyak roh jahat yang kuat yang dimeterai dalam Senarai Dewa Yang Diberikan.

Filem animasi Hayao Miyazaki 'Porco Rosso' telah dilanjutkan kepada 16 Januari tahun depan, dengan skor Douban 8.6 Filem animasi Hayao Miyazaki 'Porco Rosso' telah dilanjutkan kepada 16 Januari tahun depan, dengan skor Douban 8.6 Dec 18, 2023 am 08:07 AM

Menurut berita dari laman web ini, filem animasi Hayao Miyazaki "Porco Rosso" telah mengumumkan bahawa ia akan melanjutkan tarikh tayangan hingga 16 Januari 2024. Laman web ini sebelum ini melaporkan bahawa "Porco Rosso" telah dilancarkan di Pawagam Talian Khas Persekutuan Seni Kebangsaan. pada 17 November, dengan box office kumulatif lebih 2,000 10,000, dengan skor Douban 8.6, dan 85.8% daripada ulasan 4 dan 5 bintang. "Porco Rosso" diterbitkan oleh Studio Ghibli dan diarahkan oleh Hayao Miyazaki Moriyama, Tokiko Kato, Otsuka Akio, Okamura Akemi dan lain-lain telah mengambil bahagian dalam alih suara. Ia pada asalnya dikeluarkan di Jepun pada tahun 1992. Filem ini diadaptasi daripada buku komik Hayao Miyazaki "The Age of Airships" dan menceritakan kisah juruterbang tentera Tentera Udara Itali Pollock Rosen yang secara ajaib berubah menjadi babi. Selepas itu, dia menjadi pemburu hadiah, melawan perompak udara dan melindungi orang di sekelilingnya. Sinopsis plot: Rosen ialah seorang askar dalam Perang Dunia I

JavaScript dan WebSocket: Membina sistem ramalan cuaca masa nyata yang cekap JavaScript dan WebSocket: Membina sistem ramalan cuaca masa nyata yang cekap Dec 17, 2023 pm 05:13 PM

JavaScript dan WebSocket: Membina sistem ramalan cuaca masa nyata yang cekap Pengenalan: Hari ini, ketepatan ramalan cuaca sangat penting kepada kehidupan harian dan membuat keputusan. Apabila teknologi berkembang, kami boleh menyediakan ramalan cuaca yang lebih tepat dan boleh dipercayai dengan mendapatkan data cuaca dalam masa nyata. Dalam artikel ini, kita akan mempelajari cara menggunakan teknologi JavaScript dan WebSocket untuk membina sistem ramalan cuaca masa nyata yang cekap. Artikel ini akan menunjukkan proses pelaksanaan melalui contoh kod tertentu. Kami

Penjana Seni Animasi AI Percuma Terbaik Penjana Seni Animasi AI Percuma Terbaik Feb 19, 2024 pm 10:50 PM

Jika anda tidak sabar-sabar untuk mencari penjana seni animasi AI percuma teratas, anda boleh menamatkan carian anda. Dunia seni anime telah menawan penonton selama beberapa dekad dengan reka bentuk watak yang unik, warna yang menawan dan plot yang menawan. Walau bagaimanapun, mencipta seni anime memerlukan bakat, kemahiran, dan banyak masa. Walau bagaimanapun, dengan pembangunan kecerdasan buatan (AI) yang berterusan, anda kini boleh meneroka dunia seni animasi tanpa perlu mendalami teknologi yang kompleks dengan bantuan penjana seni animasi AI percuma yang terbaik. Ini akan membuka kemungkinan baharu untuk anda melancarkan kreativiti anda. Apakah penjana seni anime AI? Penjana Seni Animasi AI menggunakan algoritma canggih dan teknik pembelajaran mesin untuk menganalisis pangkalan data karya animasi yang luas. Melalui algoritma ini, sistem mempelajari dan mengenal pasti gaya animasi yang berbeza

Tutorial JavaScript Mudah: Cara Mendapatkan Kod Status HTTP Tutorial JavaScript Mudah: Cara Mendapatkan Kod Status HTTP Jan 05, 2024 pm 06:08 PM

Tutorial JavaScript: Bagaimana untuk mendapatkan kod status HTTP, contoh kod khusus diperlukan: Dalam pembangunan web, interaksi data dengan pelayan sering terlibat. Apabila berkomunikasi dengan pelayan, kami selalunya perlu mendapatkan kod status HTTP yang dikembalikan untuk menentukan sama ada operasi itu berjaya dan melaksanakan pemprosesan yang sepadan berdasarkan kod status yang berbeza. Artikel ini akan mengajar anda cara menggunakan JavaScript untuk mendapatkan kod status HTTP dan menyediakan beberapa contoh kod praktikal. Menggunakan XMLHttpRequest

See all articles