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 相关文章推荐
javascript基础知识大集锦(二) 推荐收藏
Jan 13 Javascript
Jquery 切换不同图片示例代码
Dec 05 Javascript
Jquery自定义button按钮的几种方法
Jun 11 Javascript
详解基于Bootstrap扁平化的后台框架Ace
Nov 27 Javascript
jQuery插件制作的实例教程
May 16 Javascript
Vue + Webpack + Vue-loader学习教程之功能介绍篇
Mar 14 Javascript
vue组件中点击按钮后修改输入框的状态实例代码
Apr 14 Javascript
如何安装控制器JavaScript生成插件详解
Oct 21 Javascript
详解javascript中的Error对象
Apr 25 Javascript
详解三种方式在React中解决绑定this的作用域问题并传参
Aug 18 Javascript
react实现复选框全选和反选组件效果
Aug 25 Javascript
element tree树形组件回显数据问题解决
Aug 14 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设计模式小结
2013/02/15 PHP
获取用户Ip地址通用方法与常见安全隐患(HTTP_X_FORWARDED_FOR)
2013/06/01 PHP
php文件夹的创建与删除方法
2015/01/24 PHP
php实现分页显示
2015/11/03 PHP
JavaScript 常见对象类创建代码与优缺点分析
2009/12/07 Javascript
Javascript常考语句107条收集
2010/03/09 Javascript
使用jQuery快速解决input中placeholder值在ie中无法支持的问题
2014/01/02 Javascript
jquery+css3打造一款ajax分页插件(自写)
2014/06/18 Javascript
jQuery中has()方法用法实例
2015/01/06 Javascript
Ajax的概述与实现过程
2016/11/18 Javascript
Javascript实现base64的加密解密方法示例
2017/06/27 Javascript
jQuery实现节点的追加、替换、删除、复制功能示例
2017/07/11 jQuery
关于javascript sort()排序你可能忽略的一点理解
2017/07/18 Javascript
react基本安装与测试示例
2020/04/27 Javascript
js实现html滑动图片拼图验证
2020/06/24 Javascript
python3 发送任意文件邮件的实例
2018/01/23 Python
Python实现PS图像调整黑白效果示例
2018/01/25 Python
python针对excel的操作技巧
2018/03/13 Python
Pandas之drop_duplicates:去除重复项方法
2018/04/18 Python
Python如何发布程序的详细教程
2018/10/09 Python
python版大富翁源代码分享
2018/11/19 Python
Python实现高斯函数的三维显示方法
2018/12/29 Python
Django后端发送小程序微信模板消息示例(服务通知)
2019/12/17 Python
解决使用python print打印函数返回值多一个None的问题
2020/04/09 Python
Python的控制结构之For、While、If循环问题
2020/06/30 Python
Python操作MySQL数据库的示例代码
2020/07/13 Python
Python paramiko使用方法代码汇总
2020/11/20 Python
Web页面中八种创建多列等高(等高列布局)的实现技术
2012/12/24 HTML / CSS
CSS3中的transform属性进行2D和3D变换的基本用法
2016/05/12 HTML / CSS
TripAdvisor西班牙官方网站:全球领先的旅游网站
2018/01/10 全球购物
中兴通讯全球官方网站:ZTE
2020/12/26 全球购物
尽职尽责村干部自我鉴定
2014/01/23 职场文书
护士感人事迹
2014/05/01 职场文书
民主评议党员个人自我评价
2015/03/03 职场文书
祝酒词范文
2015/08/12 职场文书
vue实现同时设置多个倒计时
2021/05/20 Vue.js