canvas实现城市烟花特效

代码语言:html

所属分类:粒子

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">

<title>Canvas Fireworks</title>

<style>
      html, body {
	margin: 0;	
	padding: 0;
}

body {
	background: #171717;
	color: #999;
	font: 100%/18px helvetica, arial, sans-serif;
}

a {
	color: #2fa1d6;
	font-weight: bold;
	text-decoration: none;
}

a:hover {
	color: #fff;	
}

#canvas-container {
	background: #000 url(http://repo.bfw.wiki/bfwrepo/images/bg.jpg);
  height: 400px;
	left: 50%;
	margin: -200px 0 0 -300px;
	position: absolute;
	top: 50%;
  width: 600px;
	z-index: 2;
}
		
canvas {
	cursor: crosshair;
	display: block;
	position: relative;
	z-index: 3;
}

canvas:active {
	cursor: crosshair;
}

#skyline {
	background: url(http://repo.bfw.wiki/bfwrepo/images/skyline.png) repeat-x 50% 0;
	bottom: 0;
	height: 135px;
	left: 0;
	position: absolute;
	width: 100%;
	z-index: 1;	
}

#mountains1 {
	background: url(http://repo.bfw.wiki/bfwrepo/images/mountains1.png) repeat-x 40% 0;
	bottom: 0;
	height: 200px;
	left: 0;
	position: absolute;
	width: 100%;
	z-index: 1;	
}

#mountains2 {
	background: url(http://repo.bfw.wiki/bfwrepo/images/mountains2.png) repeat-x 30% 0;
	bottom: 0;
	height: 250px;
	left: 0;
	position: absolute;
	width: 100%;
	z-index: 1;	
}

#gui {
	right: 0;
	position: fixed;
	top: 0;
	z-index: 3;
}
    </style>

<script src="http://repo.bfw.wiki/bfwrepo/js/prefixfree.min.js"></script>

</head>
<body translate="no">
<div id="gui"></div>
<div id="canvas-container">
<div id="mountains2"></div>
<div id="mountains1"></div>
<div id="skyline"></div>
</div>

<script src='http://repo.bfw.wiki/bfwrepo/js/jquery.17.js'></script>
<script src='http://repo.bfw.wiki/bfwrepo/js/dat.gui.min.js'></script>
<script>
      var Fireworks = function () {
  /*=============================================================================*/
  /* Utility
                                                                                    /*=============================================================================*/
  var self = this;
  var rand = function (rMi, rMa) {return ~~(Math.random() * (rMa - rMi + 1) + rMi);};
  var hitTest = function (x1, y1, w1, h1, x2, y2, w2, h2) {return !(x1 + w1 < x2 || x2 + w2 < x1 || y1 + h1 < y2 || y2 + h2 < y1);};
  window.requestAnimFrame = function () {return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function (a) {window.setTimeout(a, 1E3 / 60);};}();

  /*=============================================================================*/
  /* Initialize
                                                                                    /*=============================================================================*/
  self.init = function () {
    self.canvas = document.createElement('canvas');
    self.canvasContainer = $('#canvas-container');

    var canvasContainerDisabled = document.getElementById('canvas-container');
    self.canvas.onselectstart = function () {
      return false;
    };

    self.canvas.width = self.cw = 600;
    self.canvas.height = self.ch = 400;

    self.particles = [];
    self.partCount = 30;
    self.fireworks = [];
    self.mx = self.cw / 2;
    self.my = self.ch / 2;
    self.currentHue = 170;
    self.partSpeed = 5;
    self.partSpeedVariance = 10;
    self.partWind = 50;
    self.partFriction = 5;
    self.partGravity = 1;
    self.hueMin = 150;
    self.hueMax = 200;
    self.fworkSpeed = 2;
    self.fworkAccel = 4;
    self.hueVariance = 30;
    self.flickerDensity = 20;
    self.showShockwave = false;.........完整代码请登录后点击上方下载按钮下载查看

网友评论0