html5使用canvas实现跟随光标跳动的火焰效果
导读:收集整理的这篇文章主要介绍了html5使用canvas实现跟随光标跳动的火焰效果,觉得挺不错的,现在分享给大家,也给大家做个参考。本示例通过Javascript使用HTML5的canvas元素在屏幕上显示一个跳动的火焰,火焰会跟随光标跳动本...
收集整理的这篇文章主要介绍了html5使用canvas实现跟随光标跳动的火焰效果,觉得挺不错的,现在分享给大家,也给大家做个参考。本示例通过Javascript使用HTML5的canvas元素在屏幕上显示一个跳动的火焰,火焰会跟随光标跳动本效果的完整代码如下,把代码保存到HTML文件中打开也能查看效果,火焰会跟随光标:
!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 nowvar 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 coordinatesif(mouse.x & & mouse.y){ this.location = { x: mouse.x, y: mouse.y} ; } else{ this.location = { x: W/2, y: H/2} ; } //radius range = 10-30this.radius = 10+Math.random()*20; //life range = 20-30this.life = 20+Math.random()*10; this.remaining_life = this.life; //colorsthis.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)/100var 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>
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
使用canvas画“哆啦A梦”时钟的代码
关于html5.2 diaLOG的介绍
以上就是html5使用canvas实现跟随光标跳动的火焰效果的详细内容,更多请关注其它相关文章!
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: html5使用canvas实现跟随光标跳动的火焰效果
本文地址: https://pptw.com/jishu/584287.html