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 相关文章推荐
js Form.elements[i]的使用实例
Nov 13 Javascript
JavaScript高级程序设计 阅读笔记(二十一) JavaScript中的XML
Sep 14 Javascript
js动态添加事件并可传参数示例代码
Oct 21 Javascript
js图片处理示例代码
May 12 Javascript
JavaScript实现的背景自动变色代码
Oct 17 Javascript
jQuery简单注册和禁用全局事件的方法
Jul 25 Javascript
JS多物体实现缓冲运动效果示例
Dec 20 Javascript
通过sails和阿里大于实现短信验证
Jan 04 Javascript
ES6下子组件调用父组件的方法(推荐)
Feb 23 Javascript
详解使用jest对vue项目进行单元测试
Sep 07 Javascript
简单学习5种处理Vue.js异常的方法
Jun 17 Javascript
在vs code 中如何创建一个自己的 Vue 模板代码
Nov 10 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
laravel容器延迟加载以及auth扩展详解
2015/03/02 PHP
PHP中返回引用类型的方法
2015/04/03 PHP
PHP版本如何选择?应该使用哪个版本?
2015/05/13 PHP
屏蔽Flash右键信息的js代码
2010/01/17 Javascript
使用jQuery同时控制四张图片的伸缩实现代码
2013/04/19 Javascript
javascript获取select的当前值示例代码(兼容IE/Firefox/Opera/Chrome)
2013/12/17 Javascript
Jquery 垂直多级手风琴菜单附源码下载
2015/11/17 Javascript
JS组件系列之Bootstrap table表格组件神器【终结篇】
2016/05/10 Javascript
Google Maps基础及实例解析
2016/08/06 Javascript
JQuery学习总结【一】
2016/12/01 Javascript
jQuery日程管理插件fullcalendar使用详解
2017/01/07 Javascript
vue.js实现备忘录功能的方法
2017/07/10 Javascript
React Native 使用Fetch发送网络请求的示例代码
2017/12/02 Javascript
微信小程序 wx:for遍历循环使用实例解析
2019/09/09 Javascript
Vue监听滚动实现锚点定位(双向)示例
2019/11/13 Javascript
JavaScript定时器使用方法详解
2020/03/26 Javascript
JavaScript变量Dom对象的所有属性
2020/04/30 Javascript
[02:38]2018DOTA2亚洲邀请赛赛前采访-VGJ.T
2018/04/03 DOTA
Python生成不重复随机值的方法
2015/05/11 Python
利用ctypes提高Python的执行速度
2016/09/09 Python
Python中实现单例模式的n种方式和原理
2018/11/14 Python
python3实现字符串操作的实例代码
2019/04/16 Python
python自带tkinter库实现棋盘覆盖图形界面
2019/07/17 Python
python之yield和Generator深入解析
2019/09/18 Python
解决pandas展示数据输出时列名不能对齐的问题
2019/11/18 Python
pycharm修改file type方式
2019/11/19 Python
Python爬取新型冠状病毒“谣言”新闻进行数据分析
2020/02/16 Python
python ssh 执行shell命令的示例
2020/09/29 Python
Python实现LR1文法的完整实例代码
2020/10/25 Python
体育专业个人的求职信范文
2013/09/21 职场文书
毕业自我鉴定怎么写
2014/03/25 职场文书
党的群众路线教育实践活动个人承诺书
2014/05/22 职场文书
2014年预算员工作总结
2014/12/05 职场文书
中班下学期幼儿评语
2014/12/30 职场文书
小学班主任自我评价
2015/03/11 职场文书
Nginx静态压缩和代码压缩提高访问速度详解
2022/05/30 Servers