/** * Created by Zcy on 2016/11/1 0001. */ window.addEventListener('load',windowload,false) function windowload(){ canvasApp(); } function canvasSupport(){ return Modernizr.canvas; } function canvasApp(){ if(!canvasSupport()){ return; } var canvasElement=document.getElementById('fullstarbg'); var cxt=canvasElement.getContext("2d"); var windowW=window.innerWidth; var windowh=window.innerHeight; canvasElement.width=windowW; canvasElement.height=windowh; //画星星 var nums=200; var starArr=[]; for(var i=0;i0.7?0.7:opactityS; var trues=arrs[Math.floor(Math.random()*2)]; starArr.push({ x:ax, y:ay, R:r, initX:ax, initY:ay, moves:trues, initOpacity:opactityS, opacity:opactityS }); } //流线 var newLine=true; var linesArr=[]; var conter=0; function createLine(){ if(newLine==true){ var lineNum=Math.ceil(Math.random()*2); //#59576a; linesArr=[] for(var i=0;iyred){ redYlimt=yred; } //STAR for(var i=0;i0.7){ child.opacity=child.initOpacity; } } cxt.restore(); } //lines createLine(); for(var i=0;icanvasElement.height){ conter=i+1; } if(conter==linesArr.length){ conter=0; newLine=true; } } } draw(); setInterval(draw,20); function drawCircle(color,R,x,y,color2){ cxt.beginPath(); if(color2){ var gradient2=cxt.createRadialGradient(x,y,R/2,x,y,R); gradient2.addColorStop(0,color); gradient2.addColorStop(0.5,color); gradient2.addColorStop(1,color2); cxt.fillStyle=gradient2; }else{ cxt.fillStyle=color; } var r=R; cxt.arc(x,y,R,0,Math.PI*2,false); cxt.fill(); cxt.closePath(); } //代码思路: //星星 随机产生一定数量的星星对象{初始位置:x,y;星星半径} //星星闪烁与运动的原理 每隔一定秒数重新绘制 并且移动位置 与 改变透明度 闪烁与移动可以随机或者一定的规律 // //流线 同流星原理类似 斜线根据角度与第一点 求第二点 }