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 相关文章推荐
再次更新!MSClass (Class Of Marquee Scroll通用不间断滚动JS封装类 Ver 1.6)
Feb 05 Javascript
限制文本字节数js代码
Mar 06 Javascript
js实现iframe动态调整高度的代码
Jan 06 Javascript
JS使用for循环遍历Table的所有单元格内容
Aug 21 Javascript
jQuery实现图片轮播特效代码分享
Sep 15 Javascript
Javascript中click与blur事件的顺序详析
Apr 25 Javascript
Vue Transition实现类原生组件跳转过渡动画的示例
Aug 19 Javascript
javascript中的隐式调用
Feb 10 Javascript
简述JS浏览器的三种弹窗
Jul 15 Javascript
对类Vue的MVVM前端库的实现代码
Sep 07 Javascript
Vue2 添加数据可视化支持的方法步骤
Jan 02 Javascript
详解vue 动态加载并注册组件且通过 render动态创建该组件
May 30 Javascript
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 5.3.1 安装包 VC9 VC6不同版本的区别是什么
2010/07/04 PHP
写出高质量的PHP程序
2012/02/04 PHP
PHP中的正则表达式函数介绍
2012/02/27 PHP
PHP实现双链表删除与插入节点的方法示例
2017/11/11 PHP
PHP面向对象程序设计__tostring()和__invoke()用法分析
2019/06/12 PHP
使用Modello编写JavaScript类
2006/12/22 Javascript
学习jquery必备 api中英文对照的chm手册 下载
2007/05/03 Javascript
在JavaScript中,为什么要尽可能使用局部变量?
2009/04/06 Javascript
基于jquery的一个简单的脚本验证插件
2010/04/05 Javascript
基于jquery的checkbox下拉框插件代码
2010/06/25 Javascript
JS常用正则表达式总结
2013/11/12 Javascript
javascript中attribute和property的区别详解
2014/06/05 Javascript
NodeJS制作爬虫全过程
2014/12/22 NodeJs
JavaScript、jQuery与Ajax的关系
2016/01/24 Javascript
Knockoutjs 学习系列(一)ko初体验
2016/06/07 Javascript
第十篇BootStrap轮播插件使用详解
2016/06/21 Javascript
jQuery中ScrollTo用法示例
2016/09/04 Javascript
基于JavaScript实现跳转提示页面
2016/09/24 Javascript
ES6字符串模板,剩余参数,默认参数功能与用法示例
2017/04/06 Javascript
JS原型继承四步曲及原型继承图一览
2017/11/28 Javascript
微信小程序非swiper组件实现的自定义伪3D轮播图效果示例
2018/12/11 Javascript
vue+webpack dev本地调试全局样式引用失效的解决方案
2019/11/12 Javascript
[53:13]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第三场 1月18日
2021/03/11 DOTA
详解Python中 __get__和__getattr__和__getattribute__的区别
2016/06/16 Python
Python快速排序算法实例分析
2017/11/29 Python
python SSH模块登录,远程机执行shell命令实例解析
2018/01/12 Python
解决echarts中饼图标签重叠的问题
2020/05/16 Python
Flask缓存静态文件的具体方法
2020/08/02 Python
python 中的9个实用技巧,助你提高开发效率
2020/08/30 Python
Berghaus官网:户外服装和设备,防水服
2020/01/17 全球购物
高中生毕业自我鉴定
2013/10/10 职场文书
经典英文广告词
2014/03/18 职场文书
学校社团活动总结
2015/05/07 职场文书
惊涛骇浪观后感
2015/06/05 职场文书
导游词之宁夏贺兰山岩画
2019/11/08 职场文书
Java结构型设计模式之组合模式详解
2022/09/23 Java/Android