jquery实现粒子球旋转效果
代码语言:html
所属分类:粒子
代码描述:jquery实现粒子球旋转效果
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <script type="text/javascript" src="http://repo.bfw.wiki/bfwrepo/js/modernizr-2.js"></script> <link type="text/css" rel="stylesheet" href="http://repo.bfw.wiki/bfwrepo/css/jquery-ui-1.11.0.min"> <style> body {background-color:#000000; color:#555555;} h4 {font-family: sans-serif; color:#555555; font-size:16px;} h3 {font-family: sans-serif; color:#555555;} p {font-family: sans-serif; color:#888888; font-size:14px;} a {font-family: sans-serif; color:#d15423; text-decoration:none;} .slider{ width:500px; background: rgba(0,90,50,0.7); } /* HTML5 Canvas - Projecting 3D particles to a 2D canvas. from rectangleworld.com </style> </head> <body translate="no"> <div style="text-align:center"> <div class="slider" id="slider-range"></div> <div class="slider" id="slider-test"></div> <canvas id="canvasOne" width="900" height="520"></canvas> </div> <script type="text/javascript" src="http://repo.bfw.wiki/bfwrepo/js/jquery-3.2.1.min.js"></script> <script type="text/javascript" src="http://repo.bfw.wiki/bfwrepo/js/jquery-ui-1.10.3.min.js"></script> <script > window.addEventListener("load", windowLoadHandler, false); var sphereRad = 280; var radius_sp = 1; //for debug messages var Debugger = function () {}; Debugger.log = function (message) { try { console.log(message); } catch (exception) { return; } }; function windowLoadHandler() { canvasApp(); } function canvasSupport() { return Modernizr.canvas; } function canvasApp() { if (!canvasSupport()) { return; } var theCanvas = document.getElementById("canvasOne"); var context = theCanvas.getContext("2d"); var displayWidth; var displayHeight; var timer; var wait; var count; var numToAddEachFrame; var particleList; var recycleBin; var particleAlpha; var r, g, b; var fLen; var m; var projCenterX; var projCenterY; var zMax; var turnAngle; var turnSpeed; var sphereCenterX, sphereCenterY, sphereCenterZ; var particleRad; var zeroAlphaDepth; var randAccelX, randAccelY, randAccelZ; var gravity; var rgbString; //we are defining a lot of variables used in the screen update functions globally so that they don't have to be redefined every frame. var p; var outsideTest; var nextParticle; var sinAngle; var cosAngle; var rotX, rotZ; var depthAlphaFactor; var i; var theta, phi; var x0, y0, z0; init(); function init() { wait = 1; count = wait - 1; numToAddEachFrame = 8; //particle color r = 70; g = 255; b = 140; rgbString = "rgba(" + r + "," + g + "," + b + ","; //partial string for color which will be completed by appending alpha value. particleAlpha = 1; //maximum alpha displayWidth = theCanvas.width; displayHeight = theCanvas.height; fLen = 320; //represents the distance from the viewer to z=0 depth. //projection center coordinates sets location of origin projCenterX = displayWidth / 2; projCenterY = displayHeight / 2; //we will not draw coordinates if they have too large of a z-coordinate (which means they are very close to the observer). zMax = fLen - 2; particleList = {}; recycleBin = {}; //random acceleration factors - causes some random motion randAccelX = 0.1; randAccelY = 0.1; randAccelZ = 0.1; gravity = -0; //try changing to a positive number (not too large, for example 0.3), or negative for floating upwards. particleRad = 2.5; sphereCenterX = 0; sphereCenterY = 0; sphereCenterZ = -3 - sphereRad; //alpha values will lessen as particles move further back, causing depth-based darkening: zeroAlphaDepth = -750; turnSpeed = 2 * Math.PI / 1200; //the sphere will rotate at this speed (one complete rotation every 1600 frames). turnAngle = 0; //initial angle timer = setInterval(onTimer, 10 / 24); } function onTimer() { //if enough time has elapsed, we will add new particles. count++; if (count >= wait) { count = 0; for (i = 0; i < numToAddEachFrame; i++) { theta = Math.random() * 2 * Math.PI; phi = Math.acos(Math.random() * 2 - 1); x0 = sphereRad * Math.sin(phi) * Math.cos(theta); y0 = sphereRad * Math.sin(phi) * Math.sin(theta); z0 = sphereRad * Math.cos(phi); //We use the addParticle function to add a new particle. The parameters set the position and velocity components. //Note that the velocity parameters will cause the particle to initially fly outwards away from the sphere center (after //it becomes unstuck). var p = addParticle(x0, sphereCenterY + y0, sphereCenterZ + z0, 0.002 * x0, 0.002 * y0, 0.002 * z0); //we set some "envelope" parameters which will control the evolving alpha of the particles. p.attack = 50; p.hold = 50; p.decay = 100; p.initValue = 0; p.holdValue = particleAlpha; p.lastValue = 0; //the particle will be stuck in one place until this time has elapsed: p.stu.........完整代码请登录后点击上方下载按钮下载查看
网友评论0