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静态类
Dec 31 Javascript
js+css实现有立体感的按钮式文字竖排菜单效果
Sep 01 Javascript
javascript生成随机数方法汇总
Nov 12 Javascript
AngularJS中的JSONP实例解析
Dec 01 Javascript
vue仿淘宝订单状态的tab切换效果
Jun 23 Javascript
AngularJS监听ng-repeat渲染完成的方法
Mar 20 Javascript
深入浅析vue中cross-env的使用
Sep 12 Javascript
解决vue初始化项目时,一直卡在Project description上的问题
Oct 31 Javascript
uni-app 组件里面获取元素宽高的实现
Dec 27 Javascript
JS前端面试必备——基本排序算法原理与实现方法详解【插入/选择/归并/冒泡/快速排序】
Feb 24 Javascript
JavaScript数组排序的六种常见算法总结
Aug 18 Javascript
vue中如何添加百度统计代码
Dec 19 Vue.js
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 array 的加法操作代码
2010/07/24 PHP
php实现文件下载简单示例(代码实现文件下载)
2014/03/10 PHP
Yii框架引用插件和ckeditor中body与P标签去除的方法
2017/01/19 PHP
PHP手机号中间四位用星号*代替显示的实例
2017/06/02 PHP
一个可以兼容IE FF的加为首页与加入收藏实现代码
2009/11/02 Javascript
改善你的jQuery的25个步骤 千倍级效率提升
2010/02/11 Javascript
javascript获取鼠标点击元素对象(示例代码)
2013/12/20 Javascript
利用javascript打开模态对话框(示例代码)
2014/01/11 Javascript
详解jQuery向动态生成的内容添加事件响应jQuery live()方法
2015/11/02 Javascript
requireJS使用指南
2016/04/27 Javascript
浅谈javascript运算符——条件,逗号,赋值,()和void运算符
2016/07/15 Javascript
javascript 将共享属性迁移到原型中去的实现方法
2016/08/31 Javascript
Json对象和字符串互相转换json数据拼接和JSON使用方式详细介绍(小结)
2016/10/25 Javascript
原生js实现贪食蛇小游戏的思路详解
2019/11/26 Javascript
JavaScript语句错误throw、try及catch实例解析
2020/08/18 Javascript
wxpython中利用线程防止假死的实现方法
2014/08/11 Python
python访问类中docstring注释的实现方法
2015/05/04 Python
Python使用poplib模块和smtplib模块收发电子邮件的教程
2016/07/02 Python
Python中%r和%s的详解及区别
2017/03/16 Python
使用Kivy将python程序打包为apk文件
2017/07/29 Python
python之pandas用法大全
2018/03/13 Python
解决python 输出是省略号的问题
2018/04/19 Python
详解Python基础random模块随机数的生成
2019/03/23 Python
python实现的config文件读写功能示例
2019/09/24 Python
香港太阳眼镜网上商店:SmartBuyGlasses香港
2016/07/22 全球购物
德购商城:德国进口直邮商城
2017/06/13 全球购物
在职人员函授期间自我评价分享
2013/11/08 职场文书
写给爸爸的道歉信
2014/01/15 职场文书
电脑专业个人求职信范文
2014/02/04 职场文书
国培教师自我鉴定
2014/02/12 职场文书
物业品质提升方案
2014/06/08 职场文书
2015年世界环境日演讲稿
2015/03/18 职场文书
关于上班时间调整的通知
2015/04/23 职场文书
搞笑婚礼主持词开场白
2015/11/24 职场文书
学校2016年圣诞节活动总结
2016/03/31 职场文书
让文件路径提取变得更简单的Python Path库
2021/05/27 Python