1. 程式人生 > >Canvas畫雪花圖~

Canvas畫雪花圖~

<canvas id="myCanvas">你的瀏覽器不支援canvas</canvas>

額….記得給body設定個顏色,你才能看到效果,還有給canvas畫布設定一個大小。

var canvas=document.querySelector("#myCanvas");
snow(canvas);
//canvas這個引數是獲取的dom元素,
function snow(canvas){
    var context=canvas.getContext('2d');
    //微粒子建立陣列
    var particles=[];
    for(var j=0;j<500
;j++){ particles.push({//設定雪花的初始位x,y x,y向上的速度,以及雪花的大小顏色,隨機生成的 x:Math.random()*window.innerWidth, y:Math.random()*window.innerHeight, vx:Math.random()*1-0.5, vy:Math.random()*1+0.5, size:1+Math.random()*2, color:'#fff' }) } //進行繪製
function timeUp(){ context.clearRect(0,0,window.innerWidth,window.innerHeight); //清除畫布 var particle; for(var i=0;i<500;i++){//遍歷所有的雪花 particle=particles[i]; particle.x+=particle.vx;//更新雪花的新的x,y位置 particle.y+=particle.vy; if
(particle.x<0){ particle.x=window.innerWidth;//如果雪花的位置放在了左側意外,然後使其顯示在視窗右邊 } if(particle.x>window.innerWidth){ particle.x=0; } if(particle.y>=window.innerHeight){ particle.y=0; } //設定雪花顏色 context.fillStyle=particle.color; context.beginPath();//開始繪製雪花 context.arc(particle.x,particle.y,particle.size,0,Math.PI*2);//繪製圓形 context.closePath();//必和路徑 context.fill(); } } setInterval(timeUp,40); }

其實也不難,500是控制雪花數量的,然後在生成雪花的位置,把它儲存在一個數組裡面,每次繪製之前要先把畫布清除,不然原來越多,然後開始一個一個點繪製,這裡有一個範圍判斷,就是在視窗左右的判斷。
e….感覺也沒什麼難的…有問題再問我吧~~~~