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 相关文章推荐
URI、URL和URN之间的区别与联系
Dec 20 Javascript
超清晰的document对象详解
Feb 27 Javascript
js兼容火狐显示上传图片预览效果的方法
May 21 Javascript
JavaScript简单获取系统当前时间完整示例
Aug 02 Javascript
Bootstrap响应式表格详解
May 23 Javascript
JavaScript严格模式下关于this的几种指向详解
Jul 12 Javascript
vue-cli项目如何使用vue-resource获取本地的json数据(模拟服务端返回数据)
Aug 04 Javascript
JavaScript之解构赋值的理解
Jan 30 Javascript
layui监听select变化,以及设置radio选中的方法
Sep 24 Javascript
微信小程序实现上拉加载功能
Nov 20 Javascript
vue使用Google Recaptcha验证的实现示例
Aug 23 Vue.js
JavaScript高级程序设计之基本引用类型
Nov 17 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
二十行语句实现从Excel到mysql的转化
2006/10/09 PHP
在WordPress中使用wp_count_posts函数来统计文章数量
2016/01/05 PHP
PHP实现微信JS-SDK接口选择相册及拍照并上传的方法
2016/12/05 PHP
PHP共享内存使用与信号控制实例分析
2018/05/09 PHP
ThinkPHP5.1+Ajax实现的无刷新分页功能示例
2020/02/10 PHP
javascript实现的鼠标链接提示效果生成器代码
2007/06/28 Javascript
javascript qq右下角滑出窗口 sheyMsg
2010/03/21 Javascript
深入理解Javascript作用域与变量提升
2013/12/09 Javascript
JQuery中使用.each()遍历元素学习笔记
2014/11/08 Javascript
jquery实现LED广告牌旋转系统图片切换效果代码分享
2015/08/26 Javascript
全面解析JavaScript的Backbone.js框架中的Router路由
2016/05/05 Javascript
浅谈js构造函数的方法与原型prototype
2016/07/04 Javascript
angular实现表单验证及提交功能
2017/02/01 Javascript
jquery拼接ajax 的json和字符串拼接的方法
2017/03/11 Javascript
深入理解Commonjs规范及Node模块实现
2017/05/17 Javascript
详解vuejs之v-for列表渲染
2017/06/22 Javascript
vuex提交state&amp;&amp;实时监听state数据的改变方法
2018/09/16 Javascript
vue.js中proxyTable 转发请求的实现方法
2018/09/20 Javascript
详解为element-ui的Select和Cascader添加弹层底部操作按钮
2020/02/07 Javascript
Python map和reduce函数用法示例
2015/02/26 Python
python数组过滤实现方法
2015/07/27 Python
Python中遇到的小问题及解决方法汇总
2017/01/11 Python
python实现数据写入excel表格
2018/03/25 Python
python3爬虫怎样构建请求header
2018/12/23 Python
python 的 scapy库,实现网卡收发包的例子
2019/07/23 Python
Python socket模块ftp传输文件过程解析
2019/11/05 Python
使用 css3 transform 属性来变换背景图的方法
2019/05/07 HTML / CSS
关于老式浏览器兼容HTML5和CSS3的问题
2016/06/01 HTML / CSS
西班牙香水和化妆品网上商店:Douglas
2017/10/29 全球购物
SHEIN香港:价格实惠的女性时尚服装
2018/08/14 全球购物
一些PHP的面试题
2015/05/06 面试题
MySQL面试题
2014/01/12 面试题
2014超市收银员工作总结
2014/11/13 职场文书
2015年政风行风工作总结
2015/04/21 职场文书
导游词之无锡唐城
2019/12/12 职场文书
MySQL 数据恢复的多种方法汇总
2021/06/21 MySQL