Heim > Artikel > Web-Frontend > HTML5 verwendet Canvas, um den Flammeneffekt zu erzielen, der dem Cursor folgt.
In diesem Beispiel wird das HTML5-Canvas-Element verwendet, um eine schlagende Flamme auf dem Bildschirm anzuzeigen.
Der vollständige Code für diesen Effekt ist wie folgt Speichern Sie den Code in einer HTML-Datei und öffnen Sie ihn. Als Ergebnis folgt die Flamme dem Cursor:
<!DOCTYPE HTML> <head> <meta charset=utf-8" /> <title>HTML5 Canvas火焰效果</title> <style type="text/css"> body{margin: 0; padding: 0;} #canvas-keleyi-com {display: block;} </style> </head> <body> <canvas id="canvas-keleyi-com"></canvas> <script type="text/javascript"> window.onload = function(){ var keleyi_canvas = document.getElementById("canvas-kel"+"eyi-com"); var ctx = keleyi_canvas.getContext("2d"); var W = window.innerWidth, H = window.innerHeight; keleyi_canvas.width = W; keleyi_canvas.height = H;</p> <p>var particles = []; var mouse = {};</p> <p>//Lets create some particles now var particle_count = 100; for(var i = 0; i < particle_count; i++) { particles.push(new particle()); } keleyi_canvas.addEventListener('mousemove', track_mouse, false);</p> <p>function track_mouse(e) { mouse.x = e.pageX; mouse.y = e.pageY; }</p> <p>function particle() { this.speed = {x: -2.5+Math.random()*5, y: -15+Math.random()*10}; //location = mouse coordinates //Now the flame follows the mouse coordinates if(mouse.x && mouse.y) { this.location = {x: mouse.x, y: mouse.y}; } else { this.location = {x: W/2, y: H/2}; } //radius range = 10-30 this.radius = 10+Math.random()*20; //life range = 20-30 this.life = 20+Math.random()*10; this.remaining_life = this.life; //colors this.r = Math.round(Math.random()*255); this.g = Math.round(Math.random()*255); this.b = Math.round(Math.random()*255); }</p> <p>function draw() { ctx.globalCompositeOperation = "source-over"; ctx.fillStyle = "black"; ctx.fillRect(0, 0, W, H); ctx.globalCompositeOperation = "lighter";</p> <p>for(var i = 0; i < particles.length; i++) { var p = particles[i]; ctx.beginPath(); p.opacity = Math.round(p.remaining_life/p.life*100)/100 var gradient = ctx.createRadialGradient(p.location.x, p.location.y, 0, p.location.x, p.location.y, p.radius); gradient.addColorStop(0, "rgba("+p.r+", "+p.g+", "+p.b+", "+p.opacity+")"); gradient.addColorStop(0.5, "rgba("+p.r+", "+p.g+", "+p.b+", "+p.opacity+")"); gradient.addColorStop(1, "rgba("+p.r+", "+p.g+", "+p.b+", 0)"); ctx.fillStyle = gradient; ctx.arc(p.location.x, p.location.y, p.radius, Math.PI*2, false); ctx.fill();</p> <p> p.remaining_life--; p.radius--; p.location.x += p.speed.x; p.location.y += p.speed.y;</p> <p>if(p.remaining_life < 0 || p.radius < 0) { particles[i] = new particle(); } } }</p> <p>setInterval(draw, 86); } </script> </body> </html>
Das Obige ist der gesamte Inhalt dieses Artikels Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website!
Verwandte Empfehlungen:
Code zum Verwenden der Leinwand zum Zeichnen der „Doraemon“-Uhr
Über den HTML5.2-Dialog Einführung
Das obige ist der detaillierte Inhalt vonHTML5 verwendet Canvas, um den Flammeneffekt zu erzielen, der dem Cursor folgt.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!