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 相关文章推荐
prototype与jquery下Ajax实现的差别
Sep 13 Javascript
jquery1.5.1中根据元素ID获取元素对象的代码
Apr 02 Javascript
JS完成代码前最好对其做5件事
Apr 07 Javascript
多种方法实现JS动态添加事件
Nov 01 Javascript
js图片预加载示例
Apr 30 Javascript
jquery 中ajax执行的优先级
Jun 22 Javascript
Node.js 条形码识别程序构建思路详解
Feb 14 Javascript
Jquery修改image的src属性,图片不加载问题的解决方法
May 17 Javascript
浅谈angular.copy() 深拷贝
Sep 14 Javascript
angularJS1 url中携带参数的获取方法
Oct 09 Javascript
基于vue2的canvas时钟倒计时组件步骤解析
Nov 05 Javascript
vant(ZanUi)结合async-validator实现表单验证的方法
Dec 06 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
DC动画很好看?新作烂得令人发指,名叫《红色之子》
2020/04/09 欧美动漫
discuz程序的PHP加密函数原理分析
2011/08/05 PHP
PHP实现中文圆形印章特效
2015/06/19 PHP
PHP创建PowerPoint2007文档的方法
2015/12/10 PHP
PHP 在数组中搜索给定的简单实例 array_search 函数
2016/06/13 PHP
比较全的JS checkbox全选、取消全选、删除功能代码
2008/12/19 Javascript
JavaScript 设计模式 安全沙箱模式
2010/09/24 Javascript
用nodejs访问ActiveX对象,以操作Access数据库为例。
2011/12/15 NodeJs
对Web开发中前端框架与前端类库的一些思考
2015/03/27 Javascript
悬浮广告方法日常收集整理
2016/03/18 Javascript
Vuejs第八篇之Vuejs组件的定义实例解析
2016/09/05 Javascript
js倒计时显示实例
2016/12/11 Javascript
bootstrap常用组件之头部导航实现代码
2017/04/20 Javascript
NodeJS收发GET和POST请求的示例代码
2017/08/25 NodeJs
微信小程序slider组件使用详解
2018/01/31 Javascript
vue项目如何刷新当前页面的方法
2018/05/18 Javascript
Vue项目中跨域问题解决方案
2018/06/05 Javascript
json 带斜杠时如何解析的实现
2019/08/12 Javascript
[07:03]显微镜下的DOTA2第九期——430圣堂刺客杀戮秀
2014/06/20 DOTA
[03:39]这就是刀塔,我们是冠军!燃情短片讲述我们的DOTA故事
2019/07/02 DOTA
使用Python的Flask框架来搭建第一个Web应用程序
2016/06/04 Python
python scp 批量同步文件的实现方法
2019/01/03 Python
python:目标检测模型预测准确度计算方式(基于IoU)
2020/01/18 Python
python内打印变量之%和f的实例
2020/02/19 Python
越南电子产品购物网站:FPT Shop
2017/12/02 全球购物
大学生毕业自我评价范文分享
2013/11/11 职场文书
红领巾广播站广播稿
2014/02/01 职场文书
2014年三万活动总结
2014/04/26 职场文书
公务员试用期满考核材料
2014/05/22 职场文书
安全施工责任书
2014/08/25 职场文书
二年级学生期末评语
2014/12/26 职场文书
汤姆索亚历险记读书笔记
2015/06/29 职场文书
2016七夕情人节寄语
2015/12/04 职场文书
保险公司增员口号
2015/12/25 职场文书
OpenCV中resize函数插值算法的实现过程(五种)
2021/06/05 Python
sqlserver连接错误之SQL评估期已过的问题解决
2022/03/23 SQL Server