js实现canvas银河系行星旋转轨迹动画效果代码
代码语言:html
所属分类:动画
代码描述:js实现canvas银河系行星旋转轨迹动画效果代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html > <head> <meta charset="UTF-8"> <title></title> <style> body { overflow: hidden; } canvas { position: absolute; top: 0; left: 0; background-color: black; } a { width: 200px; height: 200px; position: absolute; left: calc( 100% - 200px ); top: calc( 100% - 130px ); } img { width: 200px; } </style> </head> <body> <canvas id="c"></canvas> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/dat.gui-min.js"></script> <script> var w = c.width = window.innerWidth, h = c.height = window.innerHeight, ctx = c.getContext( '2d' ), opts = { lineCount: 100, starCount: 30, radVel: .01, lineBaseVel: .1, lineAddedVel: .1, lineBaseLife: .4, lineAddedLife: .01, starBaseLife: 10, starAddedLife: 10, ellipseTilt: -.3, ellipseBaseRadius: .15, ellipseAddedRadius: .02, ellipseAxisMultiplierX: 2, ellipseAxisMultiplierY: 1, ellipseCX: w / 2, ellipseCY: h / 2, repaintAlpha: .015 }, gui = new dat.GUI, lines = [], stars = [], tick = 0, first = true; function init() { lines.length = stars.length = 0; ctx.globalCompositeOperation = 'source-over'; ctx.fillStyle = '#333'; ctx.fillRect( 0, 0, w, h ); if( first ) { var f = gui.addFolder( 'logics' ); f.add( opts, 'lineCount', 1, 300 ); f.add( opts, 'starCount', 1, 300 ); f.add( opts, 'radVel', 0, 1 ); f.add( opts, 'lineBaseVel', .01, 1 ); f.add( opts, 'lineAddedVel', 0, 1 ); f.add( opts, 'lineBaseLife', 0, 1 ); f.add( opts, 'lineAddedLife', 0, 1 ); f.add( opts, 'starBaseLife', 0, 100 ); f.add( opts, 'starAddedLife', 0, 100 ); f = gui.addFolder( 'graphics' ); f.add( opts, 'ellipseTilt', -Math.PI, Math.PI ).step( .1 ); f.add( opts, 'ellipseBaseRadius', 0, .5 ); f.add( opts, 'ellipseAddedRadius', 0, .5 ); f.add( opts, 'ellipseAxisMultiplierX', 0, 3 ); f.add( opts, 'ellipseAxisMultiplierY', 0, 3 ); f.add( opts, 'ellipseCX', 0, w ); f.add( opts, 'ellipseCY', 0, h ); f.add( opts, 'repaintAlpha', 0, 1 ); gui.add( window, 'init' ).name( 'reset animation' ); gui.add( window, 'LuukLamers' ); loop(); first = false; } } function loop() { window.requestAnimationFrame( loop ); step(); draw(); } function step() { tick += .5; if( lines.length < opts.lineCount && Math.random() < .5 ) lines.push( new Line ); if( stars.length < opts.starCount ) stars.push( new Star ); lines.map( function( line ) { line.step(); } ); stars.map( function( star ) { star.step(); } ); } function draw() { ctx.shadowBlur = 0; ctx.gl.........完整代码请登录后点击上方下载按钮下载查看
网友评论0