HTML5 canvas實作雪花飄落特效_html5教學技巧
看到網路上很多展示html5雪花飛動的效果,確實非常引人入勝,我相信大家也跟我一樣看著心動的同時,也很好奇,想研究下代碼如何實現;雖然很多地方也能下載這些原始碼,不過也不知道別人製作這類動畫時的想法及難點分析。
我這幾天剛好學習了一下,也趁著此刻有時間從需求分析、知識點、程序編寫一步步給大家解剖下,要是在各位關公面前耍大刀了,可別見笑喲。
最終效果圖如下:
圖1
一、需求分析
1、圓形雪花
本範例中雪花形狀使用圓形
2、雪花數量固定
根據圖1仔細觀察白色雪花數量,飄落過程中,整張圖的雪花數量應該是固定的,這個需求是需要透過我們觀察分析所得。這與我們現實生活中看到一幅雪花滿天飛的場景是一致的。
3、雪花大小不一致
每朵雪花它們大小各有不同,也就代表雪花的半徑是隨機的。這與我們現實生活中看到一幅雪花滿天飛的場景也是一致的。
4、雪花位置在移動
雪花飄落,自然它們的位置也在移動。
二、知識點
1、使用Html5 Canvas JavaScript畫圓-構成圓形雪花
在Html5中,需要使用Canvas同時藉助JavaScript畫圓,以構成圓形雪花-arc(x,y,r,start,stop);
2、隨機數—產生不同半徑、座標的圓形雪花
本範例中,網頁第一次載入時,需要產生一定數量的不同半徑及位置的雪花,故半徑、座標為隨機數;雪花在飄落過程中,其半徑不變,座標在一定幅度內變化,故此時座標也為隨機數-Math.random()
三、程式編寫
1、準備工作
放一個畫布canvas,並且設定整個body背景色為黑色
HTML程式碼:
- canvas id=id=id=
- id
> - 您的瀏覽器不支援canvas畫布
- canvas>
- CSS代碼:
- CSS Code 複製內容到剪貼簿
- * {
- margin : 0;
- padding : 0;
- }
- #mycanvas {
- background :
- black ; 🎜>
}
此時效果如下:
- //取得mycanvas畫布
- var can = document.getElementById("mycanvas"
- var ctx = can.getContext( //畫布寬度
- var wid = window.innerWidth;
- //畫布高度
- var hei = window.innerHeight;
- can.width=wid; can.height=hei;
- 此時效果如下:
根據我們上述需求分析及知識點解讀,首先雪花的數量是固定的,所以我們需要定義一個變數var snow = 100;這裡假設雪花數量為100,;
那我們這裡是100個雪花,所以為了方便後面操作,就用一個陣列來保存這100個雪花物件。
JavaScript程式碼如下:JavaScript Code複製內容到剪貼簿
- var snow = 100;
- //雪花座標、半徑
- var arr = [];
- //保存各圓座標與半徑 for (var i =
- arr.push({ x: Math.random() * wid, y: Math.random() * hei,
- r: Math.random() * 10 1
- })
- }
- 4、畫雪花 上面我們已經將100個雪花半徑、座標(X、Y)生成,下面就是循環使用canvas畫出雪花了(這裡就是畫圓),這裡定義一個函數
- JavaScript程式碼如下:
複製內容到剪貼簿
上面我們已經畫出100個雪花,可惜只能靠刷新網頁才能看到變化效果,但是我們需要實現的是雪花不停的移動位置。
首先我們需要藉助setInterval函數不停的重畫雪花,這裡間隔時間為50毫秒:setInterval(DrawSnow,50); 同時每一朵雪花的座標(X、Y)需要不停的改變(在一定幅度內),我們這裡的雪花是從左上方飄落到右下方,所以每朵X、Y座標值都在不停的增大,那我們用一個函數SnowFall()定義雪花飄過規則 函數程式碼如下:
JavaScript Code "white-space:pre" SnowFall();
ctx.closePath(); よろしくお願いいたします。本日ここに到着しました。大家の学術的支援を希望します。
注意:由於這裡需要繪製100個圓,所以每當畫一個圓時重新定義繪製開始坐標即:ctx.moveTo(p.x,p.y);否則會出現異樣效果,不信可以試試呀
p.x = 0;
翻訳:http://www.cnblogs.com/tangyifeng/p/5253629.html

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)