html5中文学习网

您的位置: 首页 > html5教程 > 入门教程 » 正文

html5使用canvas实现跟随光标跳动的火焰效果_html5教程技巧

[ ] 已经帮助:人解决问题
点评:本示例通过Javascript使用HTML5的canvas元素在屏幕上显示一个跳动的火焰,火焰会跟随光标跳动

本效果的完整代码如下,把代码保存到HTML文件中打开也能查看效果,火焰会跟随光标:gz9HTML5中文学习网 - HTML5先行者学习网

复制代码
代码如下:
gz9HTML5中文学习网 - HTML5先行者学习网
<!DOCTYPE HTML>gz9HTML5中文学习网 - HTML5先行者学习网
<head>gz9HTML5中文学习网 - HTML5先行者学习网
<meta charset=utf-8" />gz9HTML5中文学习网 - HTML5先行者学习网
<title>HTML5 Canvas火焰效果</title>gz9HTML5中文学习网 - HTML5先行者学习网
<style type="text/css">gz9HTML5中文学习网 - HTML5先行者学习网
body{margin: 0; padding: 0;}gz9HTML5中文学习网 - HTML5先行者学习网
#canvas-keleyi-com {display: block;}gz9HTML5中文学习网 - HTML5先行者学习网
</style>gz9HTML5中文学习网 - HTML5先行者学习网
</head>gz9HTML5中文学习网 - HTML5先行者学习网
<body>gz9HTML5中文学习网 - HTML5先行者学习网
<canvas id="canvas-keleyi-com"></canvas>gz9HTML5中文学习网 - HTML5先行者学习网
<script type="text/javascript">gz9HTML5中文学习网 - HTML5先行者学习网
window.onload = function(){gz9HTML5中文学习网 - HTML5先行者学习网
var keleyi_canvas = document.getElementById("canvas-kel"+"eyi-com");gz9HTML5中文学习网 - HTML5先行者学习网
var ctx = keleyi_canvas.getContext("2d");gz9HTML5中文学习网 - HTML5先行者学习网
var W = window.innerWidth, H = window.innerHeight;gz9HTML5中文学习网 - HTML5先行者学习网
keleyi_canvas.width = W;gz9HTML5中文学习网 - HTML5先行者学习网
keleyi_canvas.height = H;</p><p>var particles = [];gz9HTML5中文学习网 - HTML5先行者学习网
var mouse = {};</p><p>//Lets create some particles nowgz9HTML5中文学习网 - HTML5先行者学习网
var particle_count = 100;gz9HTML5中文学习网 - HTML5先行者学习网
for(var i = 0; i < particle_count; i++)gz9HTML5中文学习网 - HTML5先行者学习网
{gz9HTML5中文学习网 - HTML5先行者学习网
particles.push(new particle());gz9HTML5中文学习网 - HTML5先行者学习网
}gz9HTML5中文学习网 - HTML5先行者学习网
keleyi_canvas.addEventListener('mousemove', track_mouse, false);</p><p>function track_mouse(e)gz9HTML5中文学习网 - HTML5先行者学习网
{gz9HTML5中文学习网 - HTML5先行者学习网
mouse.x = e.pageX;gz9HTML5中文学习网 - HTML5先行者学习网
mouse.y = e.pageY;gz9HTML5中文学习网 - HTML5先行者学习网
}</p><p>function particle()gz9HTML5中文学习网 - HTML5先行者学习网
{gz9HTML5中文学习网 - HTML5先行者学习网
this.speed = {x: -2.5+Math.random()*5, y: -15+Math.random()*10};gz9HTML5中文学习网 - HTML5先行者学习网
//location = mouse coordinatesgz9HTML5中文学习网 - HTML5先行者学习网
//Now the flame follows the mouse coordinatesgz9HTML5中文学习网 - HTML5先行者学习网
if(mouse.x && mouse.y)gz9HTML5中文学习网 - HTML5先行者学习网
{gz9HTML5中文学习网 - HTML5先行者学习网
this.location = {x: mouse.x, y: mouse.y};gz9HTML5中文学习网 - HTML5先行者学习网
}gz9HTML5中文学习网 - HTML5先行者学习网
elsegz9HTML5中文学习网 - HTML5先行者学习网
{gz9HTML5中文学习网 - HTML5先行者学习网
this.location = {x: W/2, y: H/2};gz9HTML5中文学习网 - HTML5先行者学习网
}gz9HTML5中文学习网 - HTML5先行者学习网
//radius range = 10-30gz9HTML5中文学习网 - HTML5先行者学习网
this.radius = 10+Math.random()*20;gz9HTML5中文学习网 - HTML5先行者学习网
//life range = 20-30gz9HTML5中文学习网 - HTML5先行者学习网
this.life = 20+Math.random()*10;gz9HTML5中文学习网 - HTML5先行者学习网
this.remaining_life = this.life;gz9HTML5中文学习网 - HTML5先行者学习网
//colorsgz9HTML5中文学习网 - HTML5先行者学习网
this.r = Math.round(Math.random()*255);gz9HTML5中文学习网 - HTML5先行者学习网
this.g = Math.round(Math.random()*255);gz9HTML5中文学习网 - HTML5先行者学习网
this.b = Math.round(Math.random()*255);gz9HTML5中文学习网 - HTML5先行者学习网
}</p><p>function draw()gz9HTML5中文学习网 - HTML5先行者学习网
{gz9HTML5中文学习网 - HTML5先行者学习网
ctx.globalCompositeOperation = "source-over";gz9HTML5中文学习网 - HTML5先行者学习网
ctx.fillStyle = "black";gz9HTML5中文学习网 - HTML5先行者学习网
ctx.fillRect(0, 0, W, H);gz9HTML5中文学习网 - HTML5先行者学习网
ctx.globalCompositeOperation = "lighter";</p><p>for(var i = 0; i < particles.length; i++)gz9HTML5中文学习网 - HTML5先行者学习网
{gz9HTML5中文学习网 - HTML5先行者学习网
var p = particles[i];gz9HTML5中文学习网 - HTML5先行者学习网
ctx.beginPath();gz9HTML5中文学习网 - HTML5先行者学习网
p.opacity = Math.round(p.remaining_life/p.life*100)/100gz9HTML5中文学习网 - HTML5先行者学习网
var gradient = ctx.createRadialGradient(p.location.x, p.location.y, 0, p.location.x, p.location.y, p.radius);gz9HTML5中文学习网 - HTML5先行者学习网
gradient.addColorStop(0, "rgba("+p.r+", "+p.g+", "+p.b+", "+p.opacity+")");gz9HTML5中文学习网 - HTML5先行者学习网
gradient.addColorStop(0.5, "rgba("+p.r+", "+p.g+", "+p.b+", "+p.opacity+")");gz9HTML5中文学习网 - HTML5先行者学习网
gradient.addColorStop(1, "rgba("+p.r+", "+p.g+", "+p.b+", 0)");gz9HTML5中文学习网 - HTML5先行者学习网
ctx.fillStyle = gradient;gz9HTML5中文学习网 - HTML5先行者学习网
ctx.arc(p.location.x, p.location.y, p.radius, Math.PI*2, false);gz9HTML5中文学习网 - HTML5先行者学习网
ctx.fill();</p><p>gz9HTML5中文学习网 - HTML5先行者学习网
p.remaining_life--;gz9HTML5中文学习网 - HTML5先行者学习网
p.radius--;gz9HTML5中文学习网 - HTML5先行者学习网
p.location.x += p.speed.x;gz9HTML5中文学习网 - HTML5先行者学习网
p.location.y += p.speed.y;</p><p>if(p.remaining_life < 0 || p.radius < 0)gz9HTML5中文学习网 - HTML5先行者学习网
{gz9HTML5中文学习网 - HTML5先行者学习网
particles[i] = new particle();gz9HTML5中文学习网 - HTML5先行者学习网
}gz9HTML5中文学习网 - HTML5先行者学习网
}gz9HTML5中文学习网 - HTML5先行者学习网
}</p><p>setInterval(draw, 86);gz9HTML5中文学习网 - HTML5先行者学习网
}gz9HTML5中文学习网 - HTML5先行者学习网
</script>gz9HTML5中文学习网 - HTML5先行者学习网
</body>gz9HTML5中文学习网 - HTML5先行者学习网
</html>gz9HTML5中文学习网 - HTML5先行者学习网
gz9HTML5中文学习网 - HTML5先行者学习网

gz9HTML5中文学习网 - HTML5先行者学习网
(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助