cari
Rumahhujung hadapan webTutorial H5Tutorial tentang mencipta kesan bunga api dengan kemahiran tutorial HTML5_html5

Sekarang Tahun Baru Cina, dan apa yang saya boleh fikirkan semasa Tahun Baharu Cina ialah menyalakan bunga api. . . . Jadi saya menggunakan kanvas untuk menulis kesan bunga api Mengklik tetikus juga akan menghasilkan bunga api, tetapi tidak menghasilkan terlalu banyak bunga api Zarah yang dipancarkan oleh bunga api adalah antara 30 dan 200. Apabila bilangan zarah pada halaman mencapai tertentu. Kadangkala, halaman itu akan menjadi sangat tersekat, dan saya tidak sengaja mengoptimumkan Shenma. Mari kita bercakap mengenainya kemudian apabila kita mempunyai masa.

Pergi terus ke DEMO: Nyalakan bunga api

Prinsipnya sangat mudah. . . Hanya tulis kelas bunga api dan kelas serpihan, buat seketika dan biarkan ia terbang Kemudian apabila ia mencapai titik tertentu, tetapkan atribut mati objek bunga api kepada benar, kemudian nyatakan sejumlah objek serpihan, dan berikan Just buat secara rawak. titik sasaran untuk dicapai oleh objek serpihan, dan kemudian biarkan semua objek serpihan terbang ke sana.

【Bunga Bunga】

Kod XML/HTMLSalin kandungan ke papan keratan
  1. var Boom = fungsi(x,r,c,boomArea,shape){  / /烟火对象   
  2.              ini.boom = [];   
  3.             ini.x = x;   
  4.              ini.y = (kanvas.tinggi r);   
  5.             ini.r = r;   
  6.             ini.c = c;   
  7.             ini.bentuk = bentuk | palsu;   
  8.             ni.boomArea = boomArea;   
  9.              ini.theta = 0;   
  10.              ini.mati = palsu;   
  11.             ini.ba = parseInt(getRandom(80 , 200));   
  12.         }   
  13.         Boom.prototype = {   
  14.             _paint:function(){     
  15.                 ctx.save();   
  16.                 ctx.beginPath();   
  17.                 ctx.arc(this.x,this.y,this.r,0,2*Math.PI);   
  18.                 ctx.fillStyle = ini.c;   
  19.                 ctx.fill();   
  20.                 ctx.restore();   
  21.             },   
  22.             _move:function(){   
  23.                  var dx = ini.boomArea.x -  = ini.boomArea.x -  = 
  24. ini
  25. .boomArea.y - this.y;                    ini
  26. ini.x
  27.  = ini.x dx*0.01;                    ini
  28. ini.y
  29.  = ini.y dy*0.01;   
  30.                    jika(Math.abs(dx)=this.ba && Math.abs(dy)
  31. =ini.ba){   
  32.                     jika (bentuk.ini){   
  33.                         ini._shapBoom();   
  34.                     }   
  35.                     lain ini._boom();                        ini.mati
  36.  = 
  37. benar
  38. ;   
  39.                 }   
  40.                 lain {   
  41.                     ini._paint();   
  42.                 }   
  43.             },   
  44.             _drawLight:function(){   
  45.                 ctx.save();                    ctx.fillStyle
  46.  = 
  47. "rgba(255,228,150,0.3)">
  48.   
  49.                 ctx.beginPath();   
  50.                 ctx.arc(this.x , this.y , this.r 3*Math.random() 1 , 0 , 2*Math.PI);   
  51.                 ctx.fill();   
  52.                 ctx.restore();                },   
  53.             _boom:function(){    //普通爆炸   
  54.                 var fragNum = getRandom(30 , 200);   
  55.                 var gaya = getRandom(0,10) =5? 1 : 2;   
  56.                 warna var;   
  57.                 jika(gaya===1){   
  58.                     warna = {   
  59.                         a:parseInt(getRandom(128,255)),   
  60.                          b:parseInt(getRandom(128,255)),   
  61.                          c:parseInt(getRandom(128,255))   
  62.                     }   
  63.                 }   
  64.   
  65.                 var fanwei = parseInt(getRandom(300, 400));   
  66.                  untuk(var i=0;i 🎜>fragNum;i ){   
  67.                     jika(gaya===2){   
  68.                          warna = {   
  69.                             a:parseInt(getRandom(128,255)),   
  70.                             b:parseInt(getRandom(128,255)),   
  71.                             c:parseInt(getRandom(128,255))   
  72.                         }   
  73.                     }  
  74.                     var a = getRandom(-Math.PI, Math.PI);   
  75.                     var x = getRandom(0, fanwei) (s. ) ;   
  76.                     var y = getRandom(0, fanwei) (s.a.) y;    
  77.                     var jejari = getRandom(0 , 2)  >
  78.                     var 
  79. frag = baharu Frag(ini.x  , ini.                                             y );   
  80.                     this.booms.push(frag);   
  81.                 }   
  82.             },   
  83.             _shapBoom:function(){    //有形状的爆炸   
  84.                 var 
  85. bahawa = ini;   
  86.                 putValue(ocas , octx , this.shape , 5, function(dots){   
  87.                     var 
  88. dx = kanvas.lebar/2-that.x;   
  89.                     var 
  90. dy = kanvas.height/2-that.y;   
  91.                     untuk(var 
  92. i=0;i< 🎜>titik.panjang;i ){                             
  93. warna
  94.  = {a:dots[i].a,b:dots[i].b,c:dots[i].c}  
  95.                          var x = titik[i].x;   
  96.                         var y = titik[i].y;   
  97.                         var jejari = 1;   
  98.                         var frag = baharu Frag(that.x  , Frag(that.x  , that.x  , dx , y-dy);   
  99.                         itu.booms.push(frag);   
  100.                     }   
  101.                 })   
  102.             }   
  103.         }   


  【碎屑】

Kod XML/HTML复制内容到剪贴板
  1. var Frag = fungsi(centerX , centerY , radius , warna ,tx , ty) {   //烟火碎屑对象   
  2.             ini.tx = tx;   
  3.             this.ty = ty;   
  4.              ini.x = centerX;   
  5.              ini.y = centerY;   
  6.              ini.mati = palsu;   
  7.             ini.centerX = centerX;   
  8.             ini.centerY = centerY;   
  9.             ini.jejari = jejari;   
  10.             warna ini = warna;   
  11.         }   
  12.   
  13.         Frag.prototype = {   
  14.             paint:function(){   
  15.                 ctx.save();   
  16.                 ctx.beginPath();   
  17.                 ctx.arc(this.x , this.y , this.radius , 0 , 2*Math.PI);   
  18.                 ctx.fillStyle = "rgba(" this.color.a "," this.color.a "," this.color.a "," this. b "," this.color.c ",1)";   
  19.                 ctx.fill()   
  20.                 ctx.restore();   
  21.             },   
  22.             moveTo:function(index){   
  23.                 inithis.ty = this.ty 0.3;   
  24.                 var dx = ini.tx - ini.x , > > = ini.ty - this.y;   
  25.                 
  26. ini.x = Matematik.abs(dx)0.1 ? this.tx : (this.x dx*0.1);   
  27.                 ini.y = Matematik.abs(dy) >0.1 ? this.ty : (this.y dy*0.1);   
  28.                  jika(dx===0 && Math.abs(dy)=80)
  29.                     ini.mati = benar;   
  30.                 }   
  31.                 ini.cat();   
  32.             }   
  33.         }  


  让碎屑产生虚影也很简单,就是每次刷新画布时,不是擦掉也很简单,就是每次刷新画布时,不是擦掉重于玉,重于0.1(如果想虚影更长,可以把这个值弄的更小)的背景颜色。然后虚影就可以做出来了。也就是:

           

Kod XML/HTML复制内容到剪贴板
  1. ctx.save();   
  2.             ctx.fillStyle = "rgba(0,5,24,0.1)";   
  3.             ctx.fillRect(0,0,canvas.width,canvas.height);   
  4.             ctx.restore();  

Biarkan bunga api membentuk bentuk yang anda inginkan, seperti fon, gambar, dsb. Anda juga boleh melakukannya melalui kanvas luar skrin dan kaedah getImageData pada kanvas. Kanvas luar skrin, seperti namanya, ialah kanvas yang tidak kelihatan Anda boleh menggunakan document.createElement("kanvas") secara langsung dalam js untuk menjana objek dom kanvas selagi objek dom tidak diberikan kepada badan, ini Objek kanvas adalah bersamaan dengan objek luar skrin Kami boleh mendapatkan objek konteks kanvas luar skrin ini, dan kemudian melakukan apa sahaja yang kami mahu lakukan di tempat pengguna tidak dapat melihatnya.

Untuk menjadikan bunga api membentuk bentuk yang anda inginkan, anda mula-mula melukis teks atau gambar pada kanvas luar skrin, kemudian gunakan getImageData untuk mendapatkan tatasusunan piksel pada kanvas, dan kemudian melintasi tatasusunan untuk mendapatkan piksel berwarna, yang kita mahukan Selepas kandungan disimpan, ia dipaparkan dalam objek kanvas utama.

Saya telah bercakap tentang pemprosesan piksel getImageData dalam blog saya sebelum ini. Jika anda tidak tahu cara menggunakannya, sila klik di sini: Mari kita bincangkan tentang menggunakan kanvas untuk mencapai pembahagian teks dan gambar

.

Alamat kod sumber: https://github.com/whxaxes/canvas-test/tree/gh-pages/src/Funny-demo/shotFire

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
Apa yang dirujuk oleh H5? Meneroka konteksApa yang dirujuk oleh H5? Meneroka konteksApr 12, 2025 am 12:03 AM

H5referstohtml5, apivotaltechnologyinwebdevelopment.1) html5introducesnewelementsandapisforrich, dynamicwebapplications.2) itsupp ortsmultimediawithoutplugins, enhancusexperienceaceacrossdevices.3) SemantikelementsImproveContentstructureandseo.4) H5'srespo

H5: Alat, Rangka Kerja, dan Amalan TerbaikH5: Alat, Rangka Kerja, dan Amalan TerbaikApr 11, 2025 am 12:11 AM

Alat dan kerangka yang perlu dikuasai dalam pembangunan H5 termasuk Vue.js, React dan Webpack. 1.vue.js sesuai untuk membina antara muka pengguna dan menyokong pembangunan komponen. 2. Leact mengoptimumkan rendering halaman melalui DOM maya, sesuai untuk aplikasi yang kompleks. 3.WebPack digunakan untuk pembungkusan modul dan mengoptimumkan beban sumber.

Warisan HTML5: Memahami H5 pada masa kiniWarisan HTML5: Memahami H5 pada masa kiniApr 10, 2025 am 09:28 AM

Html5hassignificlylylectransformedwebdevelopmentbyintroducingsemanticelements, enhancingmultimediasupport, andimprovingperformance.1) itmadewebebsitesmoreaccessibleandseo-friendlywithSemhyViVeShive, dan

Kod H5: Kebolehcapaian dan HTML SemantikKod H5: Kebolehcapaian dan HTML SemantikApr 09, 2025 am 12:05 AM

H5 meningkatkan kebolehaksesan laman web dan kesan SEO melalui unsur -unsur semantik dan atribut ARIA. 1. Gunakan, dan lain -lain untuk mengatur struktur kandungan dan meningkatkan SEO. 2. Atribut Aria seperti ARIA-Label meningkatkan kebolehcapaian, dan pengguna teknologi bantuan boleh menggunakan laman web dengan lancar.

Adakah H5 sama dengan HTML5?Adakah H5 sama dengan HTML5?Apr 08, 2025 am 12:16 AM

"H5" dan "HTML5" adalah sama dalam kebanyakan kes, tetapi mereka mungkin mempunyai makna yang berbeza dalam senario tertentu tertentu. 1. "HTML5" adalah standard yang ditentukan oleh W3C yang mengandungi tag dan API baru. 2. "H5" biasanya merupakan singkatan HTML5, tetapi dalam pembangunan mudah alih, ia boleh merujuk kepada rangka kerja berdasarkan HTML5. Memahami perbezaan ini membantu menggunakan istilah ini dengan tepat dalam projek anda.

Apakah fungsi H5?Apakah fungsi H5?Apr 07, 2025 am 12:10 AM

H5, atau HTML5, adalah versi kelima HTML. Ia menyediakan pemaju dengan set alat yang lebih kuat, menjadikannya lebih mudah untuk membuat aplikasi web yang kompleks. Fungsi teras H5 termasuk: 1) unsur -unsur yang membolehkan lukisan grafik dan animasi di laman web; 2) tag semantik seperti, dan lain -lain untuk menjadikan struktur laman web jelas dan kondusif untuk pengoptimuman SEO; 3) API baru seperti perkhidmatan berasaskan lokasi GeolocationPi; 4) Keserasian silang penyemak imbas perlu dipastikan melalui ujian keserasian dan perpustakaan polyfill.

Cara melakukan pautan h5Cara melakukan pautan h5Apr 06, 2025 pm 12:39 PM

Bagaimana untuk membuat pautan H5? Tentukan sasaran pautan: Dapatkan URL halaman atau aplikasi H5. Buat HTML Anchors: Gunakan & lt; a & gt; Tag untuk membuat sauh dan tentukan URL sasaran pautan. Tetapkan sifat pautan (pilihan): Tetapkan sasaran, tajuk, dan sifat onClick seperti yang diperlukan. Tambah ke laman web: Tambah kod utama HTML ke laman web di mana anda mahu pautan muncul.

Cara menyelesaikan masalah keserasian H5Cara menyelesaikan masalah keserasian H5Apr 06, 2025 pm 12:36 PM

Penyelesaian kepada isu keserasian H5 termasuk: menggunakan reka bentuk responsif yang membolehkan laman web menyesuaikan susun atur mengikut saiz skrin. Gunakan alat ujian silang penyemak imbas untuk menguji keserasian sebelum dilepaskan. Gunakan Polyfill untuk memberi sokongan untuk API baru untuk pelayar yang lebih tua. Ikuti piawaian web dan gunakan kod yang berkesan dan amalan terbaik. Gunakan preprocessors CSS untuk memudahkan kod CSS dan meningkatkan kebolehbacaan. Mengoptimumkan imej, mengurangkan saiz laman web dan mempercepatkan pemuatan. Dayakan HTTPS untuk memastikan keselamatan laman web.

See all articles

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 laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

MinGW - GNU Minimalis untuk Windows

MinGW - GNU Minimalis untuk Windows

Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

Muat turun versi mac editor Atom

Muat turun versi mac editor Atom

Editor sumber terbuka yang paling popular

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.