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 相关文章推荐
TopList标签和JavaScript结合两例
Aug 12 Javascript
Firefox+FireBug使JQuery的学习更加轻松愉快
Jan 01 Javascript
JavaScript 学习笔记(十六) js事件
Feb 01 Javascript
js的onload事件及初始化按钮事件示例代码
Sep 25 Javascript
《JavaScript DOM 编程艺术》读书笔记之DOM基础
Jan 09 Javascript
javascript常用的设计模式
Feb 09 Javascript
Boostrap栅格系统与自己额外定义的媒体查询的冲突问题
Feb 19 Javascript
jquery表单提交带错误信息提示效果
Mar 09 Javascript
JavaScript requestAnimationFrame动画详解
Sep 14 Javascript
改变vue请求过来的数据中的某一项值的方法(详解)
Mar 08 Javascript
javascript动态创建对象的属性详解
Nov 07 Javascript
vue中的v-if和v-show的区别详解
Sep 01 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的面试题集
2006/11/19 PHP
php5 apache 2.2 webservice 创建与配置(java)
2011/01/27 PHP
浅析php面向对象public private protected 访问修饰符
2013/06/30 PHP
PHP curl 抓取AJAX异步内容示例
2014/09/09 PHP
CodeIgniter配置之SESSION用法实例分析
2016/01/19 PHP
PHP解密支付宝小程序的加密数据、手机号的示例代码
2021/02/26 PHP
javascript vvorld 在线加密破解方法
2008/11/13 Javascript
基于JQuery实现的类似购物商城的购物车
2011/12/06 Javascript
小心!AngularJS结合RequireJS做文件合并压缩的那些坑
2016/01/09 Javascript
使用struts2+Ajax+jquery验证用户名是否已被注册
2016/03/22 Javascript
Bootstrap Img 图片样式(推荐)
2016/12/13 Javascript
JavaScript数据结构中栈的应用之表达式求值问题详解
2017/04/11 Javascript
JS和jQuery通过this获取html标签中的属性值(实例代码)
2017/09/11 jQuery
Vue弹出菜单功能的实现代码
2018/09/12 Javascript
微信小程序事件对象中e.target和e.currentTarget的区别详解
2019/05/08 Javascript
javascript面向对象三大特征之封装实例详解
2019/07/24 Javascript
js prototype和__proto__的关系是什么
2019/08/23 Javascript
基于aotu.js实现微信自动添加通讯录中的联系人功能
2020/05/28 Javascript
用Python实现QQ游戏大家来找茬辅助工具
2014/09/14 Python
浅析Python中MySQLdb的事务处理功能
2016/09/21 Python
Python使用plotly绘制数据图表的方法
2017/07/18 Python
python中子类调用父类函数的方法示例
2017/08/18 Python
Python读取数据集并消除数据中的空行方法
2018/07/12 Python
实例讲解Python脚本成为Windows中运行的exe文件
2019/01/24 Python
python 默认参数相关知识详解
2019/09/18 Python
关于css中margin的值和垂直外边距重叠问题
2020/10/27 HTML / CSS
H5最强接口之canvas实现动态图形功能
2019/05/31 HTML / CSS
来自世界各地的优质葡萄酒:VineShop24
2018/07/09 全球购物
Surfdome西班牙:世界上最受欢迎的生活方式品牌
2019/02/13 全球购物
文秘专业大学生求职信
2013/11/10 职场文书
大学生涯自我鉴定
2014/01/16 职场文书
股权转让协议书
2014/04/12 职场文书
党员应该树立反腐倡廉的坚定意识思想汇报
2014/09/12 职场文书
酒店圣诞节活动总结
2015/05/06 职场文书
python中super()函数的理解与基本使用
2021/08/30 Python
Java并发编程之原子性-Atomic的使用
2022/03/16 Java/Android