JS实现烟花爆炸效果


Posted in Javascript onMarch 10, 2020

本文实例为大家分享了JS实现烟花爆炸的具体代码,供大家参考,具体内容如下

<!DOCTYPE html>
<html>
<head lang="en">
 <meta charset="UTF-8">
 <title></title>
 <style>
  * {
   margin: 0;
   padding: 0;
  }
  html, body {
   width: 100%;
   height: 100%;
   background-color: black;
   overflow: hidden;
  }
 </style>
</head>
<body>
<canvas id="canvas"></canvas>
<script>
 var canvas = document.getElementById("canvas");
 canvas.width = window.innerWidth;
 canvas.height = window.innerHeight;
 var content2d = canvas.getContext("2d");
 var balls = []; //存储对象
 //小球的基本属性
 function ball() {
  this.x = null;
  this.y = null;
  this.angle = null;
  this.vx=null;
  this.vy=null;
  this.r = null;
  this.color = null;
  this.init = function (x, y) {
   //初始化属性值
   this.x = x;
   this.y = y;
   //随机角度
   this.angle = Math.random() * Math.PI * 2;
   //随机小球的大小
   this.r = this.randomNum(10,25);
   this.vx=(this.randomNum(6,12)+Math.random()*0.5)*Math.cos(this.angle);
   this.vy=(this.randomNum(6,12)+Math.random()*0.5)*Math.sin(this.angle);
   this.color = this.randomColor();
  };
  //随机小球颜色
  this.randomColor = function () {
   return "#" + parseInt(Math.random() * 16777216).toString(16);
  };
  //随机大小
  this.randomNum = function (min, max) {
   return Math.random() * max + min;
  };
  //重绘时需移动
  this.move=function(){
   this.x+=this.vx;
   this.y+=this.vy;
   this.r-=0.3;
   this.vx*=0.93;
   this.vy*=0.93;
  }
 }
 //创建小球
 function createBall(x, y) {
  var count = parseInt(Math.random() * 30 + 10);
  for (var i = 0; i < count; i++) {
   var b = new ball();
   b.init(x, y);
   balls.push(b);
  }
 }
 //画小球
 function Draw(){
  for(var i=0;i<balls.length;i++){
   var circle=balls[i];
   circle.move();
   content2d.beginPath();
   content2d.fillStyle=circle.color;
   content2d.arc(circle.x,circle.y,circle.r,0,Math.PI*2);
   content2d.fill();
   content2d.closePath();
  }
 }
 //移除小球
 function removeBall(){
  for(var i=0;i<balls.length;i++){
   var circle=balls[i];
   if(circle.r<0.3){
    balls.splice(i,1);
    i--;
   }
  }
 }
 //计时器,即重绘
 loop();
 function loop(){
  //清除整个canvas
  content2d.clearRect(0,0,canvas.width,canvas.height);
  Draw();
  removeBall();
  window.requestAnimationFrame(loop);
 }
 canvas.onmouseup = function (e) {
  var x = e.pageX;
  var y = e.pageY;
  createBall(x, y);
 }
</script>
</body>
</html>

更多JavaScript精彩特效分享给大家:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
url地址自动加#号问题说明
Aug 21 Javascript
原生Js实现按的数据源均分时间点幻灯片效果(已封装)
Dec 28 Javascript
jQuery效果 slideToggle() 方法(在隐藏和显示之间切换)
Jun 28 Javascript
ajax处理php返回json数据的实例代码
Jan 24 Javascript
js调用webservice中的方法实现思路及代码
Feb 25 Javascript
js无刷新操作table的行和列
Mar 27 Javascript
Bootstrap模态框使用详解
Feb 15 Javascript
用js屏蔽被http劫持的浮动广告实现方法
Aug 10 Javascript
react.js 父子组件数据绑定实时通讯的示例代码
Sep 25 Javascript
微信小程序之数据缓存的实例详解
Sep 29 Javascript
详解如何让Express支持async/await
Oct 09 Javascript
jQuery子选择器与可见性选择器实例分析
Jun 28 jQuery
JS Web Flex弹性盒子模型代码实例
Mar 10 #Javascript
JS实现网页烟花动画效果
Mar 10 #Javascript
keep-alive不能缓存多层级路由菜单问题解决
Mar 10 #Javascript
JS关闭子窗口并且刷新上一个窗口的实现示例
Mar 10 #Javascript
Vue动态加载图片在跨域时无法显示的问题及解决方法
Mar 10 #Javascript
Vue项目打包压缩的实现(让页面更快响应)
Mar 10 #Javascript
vue实现瀑布流组件滑动加载更多
Mar 10 #Javascript
You might like
PHP添加文字水印或图片水印的水印类完整源代码与使用示例
2019/03/18 PHP
解决laravel5中auth用户登录其他页面获取不到登录信息的问题
2019/10/08 PHP
javascript检测浏览器flash版本的实现代码
2011/12/06 Javascript
JS操作Cookies包括(读取添加与删除)
2012/12/26 Javascript
Egret引擎开发指南之发布项目
2014/09/03 Javascript
js Calender控件使用详解
2015/01/05 Javascript
javascript获取系统当前时间的方法
2015/11/19 Javascript
深入分析jQuery的ready函数是如何工作的(工作原理)
2015/12/17 Javascript
15款最好的Bootstrap在线编辑器
2016/08/03 Javascript
JS实现重新加载当前页面或者父页面的几种方法
2016/11/30 Javascript
webpack入门+react环境配置
2017/02/08 Javascript
100行代码理解和分析vue2.0响应式架构
2017/03/09 Javascript
利用node.js制作命令行工具方法教程(一)
2017/06/22 Javascript
node+koa2+mysql+bootstrap搭建一个前端论坛
2018/05/06 Javascript
微信小程序授权登陆及每次检查是否授权实例代码
2019/09/18 Javascript
JS箭头函数和常规函数之间的区别实例分析【 5 个区别】
2020/05/27 Javascript
vue-cli3自动消除console.log()的调试信息方式
2020/10/21 Javascript
[02:41]辉夜杯现场一家三口 “我爸玩风行 我玩血魔”
2015/12/27 DOTA
[53:10]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs VG 第一场
2018/04/11 DOTA
python运用sklearn实现KNN分类算法
2019/10/16 Python
Python+numpy实现矩阵的行列扩展方式
2019/11/29 Python
python turtle工具绘制四叶草的实例分享
2020/02/14 Python
区分python中的进程与线程
2020/08/13 Python
python MD5加密的示例
2020/10/19 Python
真正的英国宝藏:Mappin & Webb
2019/05/05 全球购物
三星法国官方网站:Samsung法国
2019/10/31 全球购物
TCP/IP的分层模型
2013/10/27 面试题
解释i节点在文件系统中的作用
2013/11/26 面试题
个人简历中自我评价
2014/02/11 职场文书
元宵节主持词
2014/03/25 职场文书
社会体育专业大学生职业生涯规划书
2014/09/17 职场文书
教师四风自我剖析材料
2014/09/30 职场文书
2015年评职称工作总结范文
2015/04/20 职场文书
js基础语法与maven项目配置教程案例
2021/07/15 Javascript
Sql Server 行数据的某列值想作为字段列显示的方法
2022/04/20 SQL Server
python基础之//、/与%的区别详解
2022/06/10 Python