下雪實例
知識點:
canvas畫布
數組
繪畫函數
效果:
源碼:
------------------------------
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content=""> <meta name="Author" content=""> <meta name="Keywords" content=""> <meta name="Description" content=""> <title>下雪</title> <style> *{padding:0;margin:0} html{overflow:hidden} </style> </head> <body> <canvas id="canvas" ></canvas> <audio src="http://dx.sc.chinaz.com/Files/DownLoad/sound1/201210/2178.mp3" autoplay loop/> <audio src="http://dx.sc.chinaz.com/Files/DownLoad/sound1/201205/1430.mp3" autoplay loop/> <script type="text/javascript"> window.onload = function(){ //獲取畫布對象 var canvas = document.getElementById("canvas"); //獲取畫布的上下文 var context =canvas.getContext("2d"); //獲取瀏覽器屏幕的寬度和高度 var w = window.innerWidth; var h = window.innerHeight; //設置canvas的寬度和高度 canvas.width = w; canvas.height = h; //1:如何產生雪花,一個圓 ,arc(x,y,r,start,end) //初始化雪花數量 var num = 200; //雪花數組 var snows = []; for(var i=0;i<num;i++){ //x,y圓心掉的坐標位置,r代表圓的半徑,d每個圓的每個圓之間的間距,c代表的顏色 var r = randColor(); snows.push({ x:Math.random()*w, y:Math.random()*h, r:Math.random()*10, d:Math.random()*num }); }; //繪畫的函數 function draw(){ context.clearRect(0,0,w,h); context.beginPath(); for(var i=0;i<num;i++){ var snow = snows[i]; context.fillStyle = "rgba(255,255,255,0.9)"; context.moveTo(snow.x,snow.y); context.arc(snow.x,snow.y,snow.r,0,Math.PI*2); } context.fill(); //掉落 drop(); }; var angle = 0; function drop() { angle += 0.01; for(var i = 0; i < num; i++){ var p = snows[i]; //記住兩個公式:Math.sin(弧度)返回是一個0 1 -1 的數字 //math.cos(1 0 -1 ) 自由體, p.y += Math.cos(angle+p.d) + 1 + p.r*0.625; p.x += Math.sin(angle) * 8 ; //如果雪花到了邊界,進行邊界處理 if(p.x > w+5 || p.x < -5 || p.y > h){ if(i%4 > 0) { snows[i] = {x: Math.random()*w, y: -10, r: p.r, d: p.d}; }else{ //控制方向 if(Math.sin(angle) > 0){ snows[i] = {x: -5, y: Math.random()*h, r: p.r, d: p.d}; }else{ snows[i] = {x: w+5, y: Math.random()*h, r: p.r, d: p.d}; } } } } }; //執行和調用函數 draw(); setInterval(draw,10); //隨機顏色 function randColor(){ var r = Math.floor(Math.random() * 256); var g = Math.floor(Math.random() * 256); var b = Math.floor(Math.random() * 256); return "rgb("+r+","+g+","+b+")"; }; }; </script> </body> </html>另外有需要云服務器可以了解下創新互聯cdcxhl.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
本文題目:HTML5實現下雪實例-創新互聯
本文地址:http://vcdvsql.cn/article6/pgjig.html
成都網站建設公司_創新互聯,為您提供標簽優化、全網營銷推廣、品牌網站設計、外貿建站、靜態網站、網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯