Canvas畫雪花圖~
阿新 • • 發佈:2019-01-25
<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….感覺也沒什麼難的…有問題再問我吧~~~~