cari
Rumahhujung hadapan webTutorial H5Contoh tutorial HTML5 Canvas super cool kembang api mekar kod pelaksanaan kemahiran tutorial_html5

Ini adalah animasi Kanvas HTML5 yang hebat. Ia akan mensimulasikan kesan khas animasi bunga api yang mekar dalam kehidupan sebenar kita. Kesannya sangat realistik, tetapi ia adalah simulasi komputer ia, kesannya masih agak teruk, hehe. Satu perkara yang luar biasa tentang animasi Kanvas HTML5 ini ialah prestasinya pada dasarnya tiada lag pada Chrome, walaupun anda menyalakan banyak bunga api.

Mari analisa secara ringkas proses dan kod untuk melaksanakan kesan khas bunga api HTML5 ini, terutamanya kod HTML, kod CSS dan kod Javascript.

 Kod HTML:

Kod XML/HTMLSalin kandungan ke papan keratan
  1. div id=”gui”>div>
  2. div id=”bekas kanvas”> div id=”gunung2″>div> 
  3. div id=”gunung1″ >div>div id=”skyline”>div> div>

Struktur HTML adalah sangat mudah, iaitu bekas kanvas dibina dan kami akan menggunakan JS untuk menjana objek Kanvas dalam bekas ini. Anda akan mengetahuinya dengan melihat kod JS akhir.

 Kod CSS:

Kod CSSSalin kandungan ke papan keratan
  1. #kanvas-bekas { latar belakang#000 url(bg.jpg); tinggi400pxkiri: 50%; margin: -200px 0 0 -300pxkedudukanmutlakatas: 50%; lebar600pxz-indeks: 2;   
  2. } kanvas { kursorpalang silangpaparansekatkedudukansaudaraz-indeks: 3;   
  3. } kanvas:aktif { kursorpalang silang;   
  4. #skyline { latar belakangurl (skyline.png) ulang-x 50% 0; bawahbawah: 0; tinggi135pxkiri: 0; kedudukanmutlaklebar: 100%; z-indeks: 1;       
  5. #mountains1 { latar belakangurl (gunung1.png) ulang-x 40% 0; bawahbawah: 0; tinggi200pxkiri: 0; kedudukanmutlaklebar: 100%; z-indeks: 1;       
  6. #mountains2 { latar belakangurl (gunung2.png) ulang-x 30% 0; bawahbawah: 0; tinggi250pxkiri: 0; kedudukanmutlaklebar: 100%; z-indeks: 1;       
  7. #gui { kanankanan: 0; kedudukantetapatas: 0; z-indeks: 3;   
  8. }  

Kod CSS bukanlah sesuatu yang istimewa, ia mentakrifkan warna latar belakang dan sempadan.

Seterusnya ialah kod Javascript yang paling penting.

 Kod JavaScript:

Kod JavaScriptSalin kandungan ke papan keratan
  1. self.init = fungsi(){       
  2.     self.dt = 0;   
  3.         self.oldTime = Date.now();   
  4.         self.canvas = document.createElement('canvas');                   
  5.         self.canvasContainer = $('#canvas-container'); var canvasContainerDisabled = document.getElementById('canvas-container');   
  6.         self.canvas.onselectstart = fungsi() { return false >;   
  7.         };   
  8.   
  9.         self.canvas.width = self.cw = 600;   
  10.         self.canvas.height = self.ch = 400;       
  11.   
  12.         zarah diri = [];       
  13.         self.partCount = 30;   
  14.         bunga api sendiri = [];       
  15.         self.mx = self.cw/2;   
  16.         self.my = self.ch/2;   
  17.         self.currentHue = 170;   
  18.         self.partSpeed = 5;   
  19.         self.partSpeedVariance = 10;   
  20.         self.partWind = 50;   
  21.         self.partFriction = 5;   
  22.         self.partGravity = 1;   
  23.         self.hueMin = 150;   
  24.         self.hueMax = 200;   
  25.         self.fworkSpeed = 2;   
  26.         self.fworkAccel = 4;   
  27.         self.hueVariance = 30;   
  28.         self.flickerDensity = 20;   
  29.         self.showShockwave = palsu;   
  30.         self.showTarget = benar;   
  31.         self.clearAlpha = 25;   
  32.   
  33.         self.canvasContainer.append(self.canvas);   
  34.         self.ctx = self.canvas.getContext('2d');   
  35.         self.ctx.lineCap = 'bulat';   
  36.         self.ctx.lineJoin = 'bulat';   
  37.         self.lineWidth = 1;   
  38.         self.bindEvents();               
  39.         self.canvasLoop();   
  40.   
  41.         self.canvas.onselectstart = fungsi() { return false >;   
  42.         };   
  43.   
  44.     };  

Kod JS ini terutamanya membina objek Kanvas dalam bekas kanvas, dan memulakan penampilan dan sifat animasi objek kanvas.

Kod JavaScriptSalin kandungan ke papan keratan
  1. var Zarah = fungsi(x, y, warna){ ini.x = x; ini.y = y; ini.coordLast = [   
  2.             {x: x, y: y},   
  3.             {x: x, y: y},   
  4.             {x: x, y: y}   
  5.         ]; ini.sudut = rand(0, 360); ini.speed = rand(((self.partSpeed - self.partSpeedVariance) ini.geseran = 1 - diri.partFriction/100; ini.gravity = self.partGravity/2; ini.hue = rand(hue-self.hueVariance, hue self.hueVariance); ini.kecerahan = rand(50, 80); ini.alpha = rand(40,100)/100; ini.pereputan = rand(10, 50)/1000; ini.wind = (rand(0, self.partWind) - (self.partWind/2))/25; ini.lineWidth = self.lineWidth;   
  6.     };   
  7.   
  8.     Particle.prototype.update = fungsi(indeks){ var radian =  ini.sudut * Math.PI / 180; var vx = Math.cos(radians) * ini.speed; var vy = Math.sin(radians) * ini.speed   ini .graviti; ini.kelajuan *= ini.geseran; ini.coordLast[2].x = ini.coordLast[1].x; ini.coordLast[2].y = ini.coordLast[1].y; ini.coordLast[1].x = ini.coordLast[0].x; ini.coordLast[1].y = ini.coordLast[0].y; ini.coordLast[0].x = ini.x; ini.coordLast[0].y = ini.y; ini.x  = vx * self.dt; ini.y  = vy * self.dt; ini.sudut  = ini.angin; ini.alpha -= ini.pereputan; jika(!hitTest(0,0,self.cw,self.ch,ini.x-ini.jejari, ini.y-ini.jejari, ini .jejari*2, ini.jejari*2) |  ini.alpha 
  9.             self.particles.splice(indeks, 1);       
  10.         }               
  11.     };   
  12.   
  13.     Particle.prototype.draw = fungsi(){ var coordRand = (rand(1,3) -1);   
  14.         self.ctx.beginPath();                                   
  15.         self.ctx.moveTo(Math.round(ini.coordLast[coordRand].x), Math.round(ini.coordLast[coordRand].y));   
  16.         self.ctx.lineTo(Math.round(ini.x), Math.round(ini .y));   
  17.         self.ctx.closePath();                   
  18.         self.ctx.strokeStyle = 'hsla(' ini.hue ini.kecerahan '%, ' ini.alfa ')';   
  19.         self.ctx.stroke(); jika(self.flickerDensity > 0){ var inverseDensity = 50 - self.flickerDensity; jika(rand(0, inverseDensity) === inverseDensity){   
  20.                 self.ctx.beginPath();   
  21.                 self.ctx.arc(Math.round(ini.x), Math.round(ini .y), rand(ini.lineWidth,ini.lineWidth 3)/2, 0, Math.PI*2, palsu)  self.ctx.closePath(); var randAlpha = rand(50,100)/100;   
  22.                 self.ctx.fillStyle = 'hsla(' ini.hue .hue . , 100%, ' ini.kecerahan '%, ' randAlpha ' )';   
  23.                 self.ctx.fill();   
  24.             }       
  25.         }   
  26.     };  
  这段JS代码的功能是实现烟花爆炸后的小颗粒的绘制,从draw方法中可店以,可以,小颗粒的绘制。点,烟花颗粒即可在这个范围的随机点中散落。

Kod JavaScript复制内容到剪贴板
  1. var Bunga api = fungsi(startX, startY, targetX, targetY){ ini.x = startX; ini.y = startY; ini.startX = startX; ini.startY = startY; ini.hitX = salahini.hitY = palsuini.coordLast = [   
  2.             {x: startX, y: startY},   
  3.             {x: startX, y: startY},   
  4.              {x: startX, y: startY}   
  5.         ]; ini.targetX = targetX; ini.targetY = targetY; ini.speed = self.fworkSpeed; ini.angle = Math.atan2(targetY - startY, targetX - startX); ini.shockwaveAngle = Math.atan2(targetY - startY, targetX - startX) (90*(Math.PI/180)); ini.pecutan = self.fworkAccel/100; ini.hue = self.currentHue; ini.kecerahan = rand(50, 80); ini.alpha = rand(50,100)/100; ini.lineWidth = self.lineWidth; ini.targetRadius = 1;   
  6.     };   
  7.   
  8.     Firework.prototype.update = fungsi(indeks){   
  9.         self.ctx.lineWidth = ini.lineWidth;   
  10.   
  11.         vx = Math.cos(ini.sudut) * ini.kelajuan,   
  12.         vy = Math.sin(ini.sudut) * ini.kelajuan; ini.kelajuan *= 1   ini.pecutan; ini.coordLast[2].x = ini.coordLast[1].x; ini.coordLast[2].y = ini.coordLast[1].y; ini.coordLast[1].x = ini.coordLast[0].x; ini.coordLast[1].y = ini.coordLast[0].y; ini.coordLast[0].x = ini.x; ini.coordLast[0].y = ini.y; jika(self.showTarget){ jika(ini.targetRadius ini.targetRadius  = .25 * self.dt;   
  13.             } lain { ini.targetRadius = 1 * self.dt;       
  14.             }   
  15.         } jika(ini.startX >= iniini 🎜>.targetX){ jika(ini.x   vx ini.targetX){ ini.x = ini.targetX; ini.hitX = benar;   
  16.             } lain { ini.x  = vx * self.dt;   
  17.             }   
  18.         } lain { jika(ini.x vx >= ini.targetX){ ini.x = ini .targetX; ini.hitX = benar;   
  19.             } lain { ini.x  = vx * self.dt;   
  20.             }   
  21.         } jika(ini.startY >= ini.targetY){ jika(ini.y   vy ini.targetY){ ini.y = ini.targetY; ini.hitY = benar;   
  22.             } 
  23. lain { ini.y  = vy * self.dt;   
  24.             }   
  25.         } 
  26. lain { jika(ini.y vy >= ini.targetY){ ini.y = ini .targetY; ini.hitY = benar;   
  27.             } 
  28. lain { ini.y  = vy * self.dt;   
  29.             }   
  30.         } jika(ini.hitX && ini.hitY){  var randLetupan = rand(0, 9);   
  31.             self.createParticles(ini.targetX, ini.targetY, ini 🎜>.hue);   
  32.             diri.bunga api.splice(indeks, 1);                       
  33.         }   
  34.     };   
  35.   
  36.     Firework.prototype.draw = fungsi(){   
  37.         self.ctx.lineWidth = ini.lineWidth; var coordRand = (rand(1,3)-1);                       
  38.         self.ctx.beginPath();                               
  39.         self.ctx.moveTo(Math.round(ini.coordLast[coordRand].x), Math.round(ini.coordLast[coordRand].y));   
  40.         self.ctx.lineTo(Math.round(ini.x), Math.round(ini .y));   
  41.         self.ctx.closePath();   
  42.         self.ctx.strokeStyle = 'hsla(' ini.hue ini.kecerahan '%, ' ini.alfa ')';   
  43.         self.ctx.stroke(); 
  44. jika(self.showTarget){   
  45.             self.ctx.save();   
  46.             self.ctx.beginPath();   
  47.             self.ctx.arc(Math.round(
  48. ini.targetX), Math.round(ini .targetY), ini.targetRadius, 0, Math.PI*2, false)   
  49.             self.ctx.closePath();   
  50.             self.ctx.lineWidth = 1;   
  51.             self.ctx.stroke();   
  52.             self.ctx.restore();   
  53.         } jika(self.showShockwave){   
  54.             self.ctx.save();   
  55.             self.ctx.translate(Math.round(ini.x), Math.round(ini .y));   
  56.             self.ctx.rotate(ini.shockwaveAngle);   
  57.             self.ctx.beginPath();   
  58.             self.ctx.arc(0, 0, 1*(ini.speed/5), 0, Math.PI,  benar);   
  59.             self.ctx.strokeStyle = 'hsla(' ini.hue '> , 100%, ' ini.kecerahan '%, ' rand(25, 60)/100 ')';   
  60.             self.ctx.lineWidth = ini.lineWidth;   
  61.             self.ctx.stroke();   
  62.             self.ctx.restore();   
  63.         }                                    
  64.     };  

  这段JS代码是创建烟花实例的,我们也可以从draw方法中看出,当我仇為的,我们也可以从draw方法中看出,当我仇為炠时,烟花发射的目的地就在那个点上。

  这款HTML5 Canvas烟花效果的核心代码就是这样,谢谢阅读,希望能帮到大家说家,我们会努力分享更多优秀的文章。

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
Memahami Kod H5: Asas HTML5Memahami Kod H5: Asas HTML5Apr 17, 2025 am 12:08 AM

HTML5 adalah teknologi utama untuk membina laman web moden, menyediakan banyak elemen dan ciri -ciri baru. 1. HTML5 memperkenalkan unsur -unsur semantik seperti, dan lain -lain, yang meningkatkan struktur laman web dan SEO. 2. Sokongan unsur multimedia dan menanamkan media tanpa pemalam. 3. Borang meningkatkan jenis input baru dan sifat pengesahan, memudahkan proses pengesahan. 4. Menawarkan fungsi storan luar talian dan tempatan untuk meningkatkan prestasi laman web dan pengalaman pengguna.

Kod H5: Amalan Terbaik untuk Pemaju WebKod H5: Amalan Terbaik untuk Pemaju WebApr 16, 2025 am 12:14 AM

Amalan terbaik untuk kod H5 termasuk: 1. Gunakan pengisytiharan dan pengekodan watak yang betul; 2. Gunakan tag semantik; 3. Mengurangkan permintaan HTTP; 4. Gunakan pemuatan asynchronous; 5. Mengoptimumkan imej. Amalan ini dapat meningkatkan kecekapan, penyelenggaraan dan pengalaman pengguna halaman web.

H5: Evolusi piawaian dan teknologi webH5: Evolusi piawaian dan teknologi webApr 15, 2025 am 12:12 AM

Piawaian dan teknologi web telah berkembang dari HTML4, CSS2 dan JavaScript mudah setakat ini dan telah menjalani perkembangan yang ketara. 1) HTML5 memperkenalkan API seperti kanvas dan webstorage, yang meningkatkan kerumitan dan interaktiviti aplikasi web. 2) CSS3 menambah fungsi animasi dan peralihan untuk menjadikan halaman lebih berkesan. 3) JavaScript meningkatkan kecekapan pembangunan dan kebolehbacaan kod melalui sintaks moden node.js dan ES6, seperti fungsi anak panah dan kelas. Perubahan ini telah mempromosikan pembangunan pengoptimuman prestasi dan amalan terbaik aplikasi web.

Adakah H5 adalah singkat untuk HTML5? Meneroka butiranAdakah H5 adalah singkat untuk HTML5? Meneroka butiranApr 14, 2025 am 12:05 AM

H5 bukan sekadar singkatan HTML5, ia mewakili ekosistem teknologi pembangunan web moden yang lebih luas: 1. H5 termasuk HTML5, CSS3, JavaScript dan API dan Teknologi yang berkaitan; 2. Ia menyediakan pengalaman pengguna yang lebih kaya, interaktif dan lancar, dan boleh berjalan dengan lancar pada pelbagai peranti; 3. Menggunakan timbunan teknologi H5, anda boleh membuat laman web responsif dan fungsi interaktif yang kompleks.

H5 dan HTML5: Istilah yang biasa digunakan dalam pembangunan webH5 dan HTML5: Istilah yang biasa digunakan dalam pembangunan webApr 13, 2025 am 12:01 AM

H5 dan HTML5 merujuk kepada perkara yang sama, iaitu HTML5. HTML5 adalah versi kelima HTML, membawa ciri -ciri baru seperti tag semantik, sokongan multimedia, kanvas dan grafik, penyimpanan luar talian dan penyimpanan tempatan, meningkatkan ekspresi dan interaktiviti laman web.

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

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)
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

PhpStorm versi Mac

PhpStorm versi Mac

Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

EditPlus versi Cina retak

EditPlus versi Cina retak

Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

SublimeText3 versi Inggeris

SublimeText3 versi Inggeris

Disyorkan: Versi Win, menyokong gesaan kod!

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.