JavaScript实现HTML5烟花特效
烟花效果如下(请使用支持HTML5的浏览器查看):
点击这里查看效果:http://keleyi.com/keleyi/phtml/html5/14.htm
源代码如下:
<style>canvas{background-color:#000000;;z-index:9999;}</style>
<canvas id="canvas-keleyi-com"></canvas>
<script>
var c = document.getElementById('canvas-ke'+'leyi-com');
if (!c.getContext) alert('请使用支持HTML5的浏览器,例如Chrome,IE9以上。');
else(function(c, cvs) {
//随着窗口调整画布大小
var W, H;
var up = 0;
//(onresize = function() {
// c.width = W = window.innerWidth;
// c.height = H = window.innerHeight;
// })();
c.width=W=616;
c.height=H=400;
//生成一个烟花
function createPT(x, y, r, g, b) {
return {
r: r,g: g,b: b,
x: x,y: y,
//轨迹序列
pl: [],
dx: rnd(20) - 10,
dy: rnd(10) - 7,
life: 30 + rnd(30),
//移动函数,修改加速度和坐标
move: function() {
this.dx *= .98;
this.dy *= .98;
this.dy += .22;
this.x += this.dx;
this.y += this.dy;
this.pl.push([this.x, this.y]);
//保持轨迹长度
if (this.pl.length > 10) this.pl.shift();
this.life--;
}
};
}
//总烟火数组
var B = [];
//在x,y位置创建一个烟火
function createBoom(x, y) {
var q = [],
r = rnd(255) | 0,
g = rnd(255) | 0,
b = rnd(255) | 0;
for (var i = 0; i < rnd(16) + 15; i++) q.push(createPT(x, y, r, g, b));
B.push(q);
}
setInterval(function() {
cvs.clearRect(0, 0, W, H);
//依次绘制烟火
for (var n = 0; n < B.length; n++) {
var q = B[n];
for (var i = 0; i < q.length; i++) {
var pt = q[i];
pt.move();
dq(pt.pl, pt.life / 30, pt.r, pt.g, pt.b);
//超过生存周期就消失 柯 乐 义
if (pt.life <= 0) q.splice(i, 1);
}
//当一个烟火包含的烟花个数为零,则消灭这个烟火
if (!B[n].length) B.splice(n, 1);
}
//每隔一段时间添加一个新烟火
if (new Date - up < 2000 + rnd(2000)) return;
up = new Date;
createBoom(rnd(W / 2) + W / 4, rnd(50) + 50);
},20);
function rnd(n) {
return (n || 1) * Math.random();
}
function dq(ar, z, r, g, b) {
cvs.save();
//绘制轨迹。思路是每次都绘制一条透明的轨迹,叠加起来形成一条渐变的样子
for (var i = 0; i < ar.length; i++) {
cvs.strokeStyle = 'rgba(' + r + ',' + g + ',' + b + ',' + Math.abs(.2 * z) + ')';
cvs.lineWidth = Math.min(i + 1, 4)*2;
cvs.beginPath();
cvs.moveTo(ar[i][0], ar[i][1]);
for (var j = i + 1; j < ar.length; j++) cvs.lineTo(ar[j][0], ar[j][1]);
cvs.stroke();
}
cvs.restore();
}
})(c, c.getContext('2d'));</script>
原文:http://keleyi.com/a/bjac/3pipmkmg.htm
触须:http://keleyi.com/a/bjac/k3pi4ehx.htm
web前端:http://www.cnblogs.com/jihua/p/webfront.html
JavaScript实现HTML5烟花特效的更多相关文章
- 纯JavaScript实现HTML5 Canvas六种特效滤镜
纯JavaScript实现HTML5 Canvas六种特效滤镜 小试牛刀,实现了六款简单常见HTML5 Canvas特效滤镜,并且封装成一个纯 JavaScript可调用的API文件gloomyfi ...
- 青瓷引擎之纯JavaScript打造HTML5游戏第二弹——《跳跃的方块》Part 10(排行榜界面&界面管理)
继上一次介绍了<神奇的六边形>的完整游戏开发流程后(可点击这里查看),这次将为大家介绍另外一款魔性游戏<跳跃的方块>的完整开发流程. (点击图片可进入游戏体验) 因内容太多,为 ...
- 【javascript】html5中使用canvas编写头像上传截取功能
[javascript]html5中使用canvas编写头像上传截取功能 本人对canvas很是喜欢,于是想仿照新浪微博头像上传功能(前端使用canvas) 本程序目前在谷歌浏览器和火狐浏览器测试可用 ...
- 分享8款绚丽的HTML5/jQuery特效插件
有几天没有分享前端资源了,今天要向大家分享15款非常给力的HTML5/jQuery特效插件,废话少说,一起来看看. 1.CSS3图片重力感应特效 很酷的一款CSS3模拟重力感应特效,你可以拖动图片来甩 ...
- 7款震撼人心的HTML5文字特效
1.CSS3五彩文字特效 文字带阴影效果 这是一款非常具有卡通形象的CSS3五彩文字特效,虽然没有迷人的动画效果,但是五彩缤纷的文字展现在屏幕上也是非常酷的,再加上每一个文字都有不同角度的阴影效果,加 ...
- JavaScript与html5写的贪吃蛇完整代码
JavaScript与html5写的贪吃蛇完整代码 查看运行效果可访问http://www.codesocang.com/texiao/youxitexiao/2014/0402/7045.html# ...
- 每天一个JavaScript实例-html5拖拽
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- 创意HTML5文字特效 类似翻页的效果
原文:创意HTML5文字特效 类似翻页的效果 之前在网上看到一款比较有新意的HTML5文字特效,文字效果是当鼠标滑过是出现翻开折叠的效果,类似书本翻页.于是我兴致勃勃的点开源码看了一下,发现其实实现也 ...
- ( 转 )超级惊艳 10款HTML5动画特效推荐
今天我们要来推荐10款超级惊艳的HTML5动画特效,有一些是基于CSS3和jQuery的,比较实用,特别是前几个HTML5动画,简直酷毙了,现在将它们分享给大家,也许你能用到这些HTML5动画和jQu ...
随机推荐
- [java] 汇率换算器实现(2)
[java] 汇率换算器实现(2) // */ // ]]> // */ // ]]> [java] 汇率换算器实现(2) Table of Contents 1 系列文章地址 2 前 ...
- path入门 20141102-1405
那Python有哪些缺点呢? 第一个缺点就是运行速度慢,和C程序相比非常慢, 第二个缺点就是代码不能加密. Python是解释型的 不是编译型的 Python解释器-CPython 命令行: 只需要在 ...
- 第18/24周 乐观并发控制(Optimistic Concurrency)
大家好,欢迎回到性能调优培训.上个星期我通过讨论悲观并发模式拉开了第5个月培训的序幕.今天我们继续,讨论下乐观并发模式(Optimistic Concurrency). 行版本(Row Version ...
- 阅读《LEARNING HARD C#学习笔记》知识点总结与摘要二
今天继续分享我的阅读<LEARNING HARD C#学习笔记>知识点总结与摘要二,仍然是基础知识,但可温故而知新. 七.面向对象 三大基本特性: 封装:把客观事物封装成类,并隐藏类的内部 ...
- JavaScript基础插曲---apply,call和URL编码等方法
Js基础学习 Js的压缩: 就是利用js的语法格式通过缩短变量名,去掉空格等来进行压缩. Apply和call的使用 1:apply方法:应用某一对象的方法,用于一个对象替换当前对象.主要是改变thi ...
- C#2.0 to 4.0
//xmlElement.set_InnerText(value); xmlElement.InnerText = value; ).ToCharArray());//Convert.ToChar(s ...
- 一个通过JSONP跨域调用WCF REST服务的例子(以jQuery为例)
JSONP(JSON with Padding)可以看成是JSON的一种“使用模式”,用以解决“跨域访问”的问题,这篇简单的文章给出一个简单的例子用于模拟如何通过jQuery以JSONP的访问调用一个 ...
- inner join on, left join on, right join on的区别与介绍
Table A aid adate 1 a1 2 a2 3 a3 TableB bid bdate 1 b1 2 b2 4 b4 两个表a,b相连接, ...
- CSRF防御之ASP.NET MVC
MVC中的Html.AntiForgeryToken()是用来防止跨站请求伪造(CSRF:Cross-site request forgery)攻击的一个措施. 举个简单例子,譬如整个系统的公告在网站 ...
- 新浪微博.Net SDK第三版源代码和示例【最后一次更新了】
时间过得飞快,距离上次SDK更新已经3年有余.随着官方的不断跟新,老版SDK的部分接口已经不能正常使用.因此在QQ群里来吐槽的.来谩骂的朋友也开始多了起来.随着时代的发展,微博已经彻底的被微信甩开,因 ...