HTML5 Canvas绘制银河系特效(鼠标点击拖动一下看效果)
代码语言:html
所属分类:粒子
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!doctype html> <html> <head> <meta charset="utf-8"> <title>HTML5 Canvas绘制银河系特效</title> <style> body { margin:0; } canvas { position:absolute; top:0; left:0; width:100%; height:100%; } </style> </head> <body> <script type="text/javascript"> var w = window.innerWidth; var h = window.innerHeight; var dustCanvas = document.createElement('canvas'); var dustCtx = dustCanvas.getContext('2d'); var starCanvas = document.createElement('canvas'); var starCtx = starCanvas.getContext('2d'); document.body.appendChild(dustCanvas); document.body.appendChild(starCanvas); dustCanvas.width = starCanvas.width = w; dustCanvas.height = starCanvas.height = h; dustCtx.globalCompositeOperation = 'lighter'; starCtx.globalCompositeOperation = 'lighter'; var galaxies = []; var mouse = { pos: { x: w * 0.5, y: h * 0.5 }, speed: 0 }; var randomNumbers = length => Array.from(new Array(length), () => Math.random()); var PI = Math.PI; var TAU = PI * 2; var r = () => Math.random(); var angle2 = (p1,p2) => Math.atan2( p2[1]-p1[1], p2[0]-p1[0] ); var distance2 = (p1,p2) => Math.sqrt( Math.pow(p1[0]-p2[0], 2) + Math.pow(p1[1]-p2[1], 2) ); var createDustParticle = (color) => { var canvas = document.createElement('canvas'); var w = 100; var h = 100; var cx = w * 0.5; var cy = h * 0.5; canvas.width = w; canvas.height = h; var ctx = canvas.getContext('2d'); canvas.ctx = ctx; var xRand = -5 + (r()*10); var yRand = -5 + (r()*10); var xRand2 = 10 + (r()*(cx/2)); var yRand2 = 10 + (r()*(cy/2)); var color = color || { r: Math.round(150+(r()*100)), g: Math.round(50+(r()*100)), b: Math.round(50+(r()*100)) }; ctx.fillStyle = `rgba(${color.r},${color.g},${color.b},.02)`; Array .from(new Array(200), () => randomNumbers(3)) .forEach( (p,i,arr) => { var length = arr.length; var x = Math.cos( TAU/xRand/length*i ) * p[2]*xRand2 + cx; var y = Math.sin( TAU/yRand/length*i ) * p[2]*yRand2 + cy; ctx.beginPath(); ctx.moveTo(x, y); ctx.arc(x, y, p[2]*4, 0, TAU); ctx.fill(); }); return.........完整代码请登录后点击上方下载按钮下载查看
网友评论0