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 相关文章推荐
用Javscript实现表单复选框的全选功能
May 25 Javascript
JQuery入门—编写一个简单的JQuery应用案例
Jan 03 Javascript
实例分析js和C#中使用正则表达式匹配a标签
Nov 26 Javascript
jQuery动态增减行的实例代码解析(推荐)
Dec 05 Javascript
用jQuery实现优酷首页轮播图
Jan 09 Javascript
jquery表单插件form使用方法详解
Jan 20 Javascript
vue组件初学_弹射小球(实例讲解)
Sep 06 Javascript
vue 使用eventBus实现同级组件的通讯
Mar 02 Javascript
Node.js 使用request模块下载文件的实例
Sep 05 Javascript
vue实现分页组件
Jun 16 Javascript
vue如何限制只能输入正负数及小数
Jul 04 Javascript
微信小程序 textarea 层级过高问题简单解决方案
Oct 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
SONY ICF-SW7600的电路分析
2021/03/02 无线电
在php MYSQL中插入当前时间
2008/04/06 PHP
PHP 采集程序 常用函数
2008/12/18 PHP
php中apc缓存使用示例
2013/12/25 PHP
php利用新浪接口查询ip获取地理位置示例
2014/01/20 PHP
最新优化收藏到网摘代码(digg,diigo)
2007/02/07 Javascript
JavaScipt基本教程之前言
2008/01/16 Javascript
在jQuery 1.5中使用deferred对象的代码(翻译)
2011/03/10 Javascript
把jquery 的dialog和ztree结合实现步骤
2013/08/02 Javascript
jquery 删除cookie失效的解决方法
2013/11/12 Javascript
javascript操作css属性
2013/12/30 Javascript
jQuery增加自定义函数的方法
2015/07/18 Javascript
jQuery基于ajax实现星星评论代码
2015/08/07 Javascript
angularJS 如何读写缓冲的方法(推荐)
2016/08/06 Javascript
浅谈jQuery双事件多重加载的问题
2016/10/05 Javascript
JavaScript实现计数器基础方法
2017/10/10 Javascript
video.js 实现视频只能后退不能快进的思路详解
2018/08/09 Javascript
JS/CSS实现字符串单词首字母大写功能
2019/09/03 Javascript
深入解析Python中的list列表及其切片和迭代操作
2016/03/13 Python
Python中表达式x += y和x = x+y 的区别详解
2017/06/20 Python
Python3中内置类型bytes和str用法及byte和string之间各种编码转换 问题
2018/09/27 Python
Django 反向生成url实例详解
2019/07/30 Python
Pytorch之view及view_as使用详解
2019/12/31 Python
python 链接sqlserver 写接口实例
2020/03/11 Python
python实现输入三角形边长自动作图求面积案例
2020/04/12 Python
python opencv 实现读取、显示、写入图像的方法
2020/06/08 Python
Python3+Django get/post请求实现教程详解
2021/02/16 Python
澳大利亚最受欢迎的超级商场每日优惠:Catch
2020/11/17 全球购物
波兰多品牌运动商店:StreetStyle24.pl
2020/09/22 全球购物
string = null 和string = ''的区别
2013/04/28 面试题
党章学习思想汇报
2014/01/14 职场文书
幼儿园八一建军节活动方案
2014/08/27 职场文书
房屋租赁授权委托书范本
2014/09/20 职场文书
2014最新实习证明模板
2014/10/02 职场文书
培训通知
2015/04/17 职场文书
用Python实现Newton插值法
2021/04/17 Python