Saya telah melihat banyak paparan di Internet yang menunjukkan kesan html5 salji terbang, yang sememangnya sangat menarik Saya percaya bahawa semua orang teruja seperti saya dan juga sangat ingin tahu dan ingin mengkaji cara melaksanakan kod tersebut ini boleh dimuat turun dari banyak tempat Kod sumber, tetapi saya tidak tahu idea orang lain dan analisis kesukaran semasa membuat animasi sedemikian.
Saya baru sahaja belajar banyak hari ini, dan saya memanfaatkan masa sekarang untuk membedah langkah demi langkah daripada analisis permintaan, mata pengetahuan dan pengaturcaraan Jika saya cuba memperbodohkan diri sendiri di hadapan awak, tolong jangan gelak.
Penyampaian akhir adalah seperti berikut:
Gambar 1
1. Analisis permintaan
1. Kepingan salji bulat
Bentuk kepingan salji dalam contoh ini menggunakan bulatan
2. Bilangan kepingan salji tetap
Perhatikan dengan teliti bilangan kepingan salji putih mengikut Rajah 1. Semasa proses jatuh, bilangan kepingan salji dalam keseluruhan gambar perlu diperbaiki Keperluan ini perlu diperolehi melalui pemerhatian dan analisis kami. Ini konsisten dengan adegan yang kita lihat dalam kehidupan sebenar di mana kepingan salji berterbangan di seluruh langit.
3. Saiz kepingan salji tidak konsisten
Setiap kepingan salji mempunyai saiz yang berbeza, bermakna jejari kepingan salji adalah rawak. Ini konsisten dengan adegan di mana kita melihat kepingan salji terbang di seluruh langit dalam kehidupan sebenar.
4. Kedudukan kepingan salji bergerak
Kepingan salji jatuh, dan secara semula jadi kedudukannya juga bergerak.
2. Mata pengetahuan
1 Gunakan JavaScript Kanvas Html5 untuk melukis bulatan - membentuk kepingan salji bulat
Dalam Html5, anda perlu menggunakan Kanvas dan menggunakan JavaScript untuk melukis bulatan untuk membentuk kepingan salji bulat - arka(x, y, r, mula, berhenti
).2. Nombor rawak—hasilkan kepingan salji bulat dengan jejari dan koordinat yang berbeza
Dalam contoh ini, apabila halaman web dimuatkan buat kali pertama, sejumlah kepingan salji dengan jejari dan kedudukan yang berbeza perlu dijana, jadi jejari dan koordinat ialah nombor rawak semasa kepingan salji jatuh, jejarinya kekal tidak berubah dan koordinat berada dalam julat tertentu, jadi koordinat juga adalah nombor rawak pada masa ini——Math.random()
3. Pemrograman
1. Persediaan
Letakkan kanvas dan tetapkan warna latar belakang seluruh badan kepada hitam
Kod HTML:
Kod CSS:
2. Kanvas memenuhi skrin
Kod JavaScript adalah seperti berikut:
Kod JavaScript
Salin kandungan ke papan keratan
3. Permulaan menjana bilangan kepingan salji yang tetap
Menurut analisis permintaan di atas dan tafsiran mata pengetahuan, pertama sekali, bilangan kepingan salji adalah tetap, jadi kita perlu menentukan pembolehubah var salji = 100 di sini diandaikan bahawa bilangan kepingan salji ialah 100; Apabila menghasilkan kepingan salji, jejari dan kedudukan setiap kepingan salji adalah berbeza Kami menganggap setiap kepingan salji sebagai objek, maka sifat objek ini termasuk: jejari, koordinat (X, Y), maka objek kepingan salji boleh ditulis sebagai. var snowOject={x:1,y:10,r:5}, di sini mewakili kepingan salji bulat dengan koordinat (1,10) dan jejari 5 dalam contoh ini, memandangkan jejari dan koordinat ialah nombor rawak, Matematik digunakan . rawak() menjana jejari dan koordinat (X, Y) untuk 100 kepingan salji masing-masing
Kemudian kami mempunyai 100 kepingan salji di sini, jadi untuk memudahkan operasi seterusnya, kami menggunakan tatasusunan untuk menyimpan 100 objek kepingan salji ini.
Kod JavaScript adalah seperti berikut:
Kod JavaScript
Kami telah menghasilkan 100 jejari kepingan salji dan koordinat (X, Y) di atas adalah menggunakan kanvas untuk melukis kepingan salji (di sini, kami melukis bulatan di sini
Kod JavaScript adalah seperti berikut:
Anda boleh cuba memuat semula halaman web beberapa kali untuk melihat sama ada kepingan salji dengan saiz dan kedudukan yang berbeza akan dijana (biasanya mungkin apabila anda melakukan ini, anda hampir dengan kesan akhir
). Nota: Oleh kerana 100 bulatan perlu dilukis di sini, koordinat permulaan lukisan ditakrifkan semula setiap kali bulatan dilukis: ctx.moveTo(p.x,p.y); jika tidak, kesan pelik akan berlaku. cubalah
5. Kepingan salji berkibarKami telah melukis 100 kepingan salji di atas Malangnya, kami hanya dapat melihat kesan perubahan dengan menyegarkan halaman web, tetapi apa yang perlu kami capai ialah kepingan salji itu terus bergerak. Mula-mula kita perlu menggunakan fungsi setInterval untuk terus melukis semula kepingan salji Selang di sini ialah 50 milisaat: setInterval(DrawSnow,50);
Pada masa yang sama, koordinat (X, Y) setiap kepingan salji perlu sentiasa ditukar (dalam julat tertentu Kepingan salji di sini jatuh dari kiri atas ke kanan bawah, jadi nilai koordinat X dan Y). setiap kepingan salji berada dalam Terus meningkat, kemudian kami menggunakan fungsi SnowFall() untuk mentakrifkan peraturan jatuh kepingan salji
Kod fungsi adalah seperti berikut:
Kod JavaScript
此时DrawSnow函数定义如下:
最后执行setInterval(DrawSnow, 50);
OK,经过我们上述步骤,小伙伴们是否已经对整个过程及技术实现很清><🎜
完整代码如下(大家可以直接复制到自己项目中执行,测试下效果)>:<🎜