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 Math.random()随机数函数
Nov 04 Javascript
js focus不起作用的解决方法(主要是因为dom元素是否加载完成)
Nov 05 Javascript
jQuery计算textarea中文字数(剩余个数)的小程序
Nov 28 Javascript
httpclient模拟登陆具体实现(使用js设置cookie)
Dec 11 Javascript
JavaScript实现的石头剪刀布游戏源码分享
Aug 22 Javascript
正则表达式优化JSON字符串的技巧
Dec 24 Javascript
基于jQuery实现鼠标点击导航菜单水波动画效果附源码下载
Jan 06 Javascript
使用ionic播放轮询广告的实现方法(必看)
Apr 24 Javascript
JS计算距当前时间的时间差实例
Dec 29 Javascript
vue 组件使用中的一些细节点
Apr 25 Javascript
Vuex持久化插件(vuex-persistedstate)解决刷新数据消失的问题
Apr 16 Javascript
js仿淘宝放大镜效果
Dec 28 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文件及文件夹操作之创建、删除、移动、复制
2016/07/13 PHP
YII框架常用技巧总结
2019/04/27 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
JavaScript 全角转半角部分
2009/10/28 Javascript
基于jQuery实现的当离开页面时出现提示的实现代码
2011/06/27 Javascript
在javascript中随机数 math random如何生成指定范围数值的随机数
2015/10/21 Javascript
js轮盘抽奖实例分析
2020/04/17 Javascript
AngularJs bootstrap搭载前台框架——基础页面
2016/09/01 Javascript
Js操作DOM元素及获取浏览器高宽的简单方法
2016/09/08 Javascript
微信小程序(应用号)开发新闻客户端实例
2016/10/24 Javascript
详解用webpack2.0构建vue2.0超详细精简版
2017/04/05 Javascript
Vue-Cli中自定义过滤器的实现代码
2017/08/12 Javascript
jQuery实现获取table中鼠标click点击位置行号与列号的方法
2017/10/09 jQuery
mpvue 单文件页面配置详解
2018/12/02 Javascript
浅析vue cli3 封装Svgicon组件正确姿势(推荐)
2020/04/27 Javascript
[45:25]完美世界DOTA2联赛循环赛 PXG vs IO 第一场 11.06
2020/11/09 DOTA
python实现整数的二进制循环移位
2019/03/08 Python
python mac下安装虚拟环境的图文教程
2019/04/12 Python
Python高级编程之继承问题详解(super与mro)
2019/11/19 Python
python 实现多维数组转向量
2019/11/30 Python
通过Python实现Payload分离免杀过程详解
2020/07/13 Python
Python 用__new__方法实现单例的操作
2020/12/11 Python
HTML5 Canvas阴影使用方法实例演示
2013/08/02 HTML / CSS
HTML5新特性之type=file文件上传功能
2018/02/02 HTML / CSS
Html5 页面适配iPhoneX(就是那么简单)
2019/09/05 HTML / CSS
浅析HTML5页面元素及属性
2021/01/20 HTML / CSS
自我鉴定思想方面
2013/10/07 职场文书
药学专业大学生个人的自我评价
2013/11/04 职场文书
个人优缺点自我评价
2014/01/27 职场文书
料理师求职信
2014/01/30 职场文书
食堂厨师岗位职责
2014/08/25 职场文书
纪律教育学习心得体会
2014/09/02 职场文书
2015年财务科工作总结范文
2015/05/13 职场文书
车位出租协议书范本
2016/03/19 职场文书
python中%格式表达式实例用法
2021/06/18 Python
Meta增速拉垮,元宇宙难当重任
2022/04/29 数码科技