您好,登錄后才能下訂單哦!
使用JavaScript怎么實(shí)現(xiàn)一個(gè)雪花飄落特效?相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
首先我們要?jiǎng)?chuàng)建一個(gè)HTML文件,將其命名為index.html
<!DOCTYPE html> <html> <head> <title> Canvas - 雪花特效 </title> <meta charset="utf-8"> <style> *{ margin:0px; padding:0px; } .myCanvas{ float:left; background:rgba(0,0,0,0); } </style> </head> <body> <canvas id="myCanvas" class="myCanvas"> </canvas> </body> </html>
在上面的代碼中,我們創(chuàng)建了一個(gè)canvas畫布,并且設(shè)置他為浮動(dòng),背景色無(如果這里不設(shè)置浮動(dòng),那么等下獲取整個(gè)屏幕的大小賦給他的時(shí)候是會(huì)產(chǎn)生邊距的)
接下來的JavaScript代碼
<script> //獲取屏幕最大長寬 var maxWidth = document.documentElement.clientWidth; var maxHeight = document.documentElement.clientHeight; //獲取canvas畫布 var canvasObj = document.getElementById('myCanvas'); //將屏幕的長寬賦給畫布 canvasObj.width = maxWidth; canvasObj.height = maxHeight; //創(chuàng)建雪花圖形(白色的圓形) var cxt = canvasObj.getContext('2d'); //設(shè)置雪花的個(gè)數(shù) var snowCount = 1000; var objArray = []; for(var index = 0;index < snowCount; index++){ objArray.push({ //隨機(jī)x軸位置 x : Math.random()*maxWidth, //隨機(jī)y軸位置 y : Math.random()*maxHeight, //隨機(jī)半徑大小 r : Math.random()*4+1, //畫圓 drow : function() { cxt.beginPath(); //填充色 cxt.fillstyle = "#fff"; //填充 cxt.fill(); //圓的屬性 cxt.arc(this.x,this.y,this.r,0,2*Math.PI); //輸出圓 cxt.stroke(); } }); } function drawSnow() { cxt.clearRect(0,0,maxWidth,maxHeight) //清除0x軸,0y軸,最大屏幕x軸,最大屏幕y軸的圓形 for(var index = 0; index<objArray.length; index++) { //把每個(gè)圓都畫出來 objArray[index].drow(); } downLoadSnow() //調(diào)用雪花移動(dòng)效果 } function downLoadSnow() { for(var index = 0;index<objArray.length;index++){ if(objArray[index].x > maxWidth) { objArray[index].x = 0; //當(dāng)移動(dòng)的位置大于最大屏幕寬度時(shí)返回到0 } else { objArray[index].x +=5; //否則一直加下去 } if(objArray[index].y > maxHeight) { objArray[index].y = 0; //當(dāng)移動(dòng)的位置大于最大屏幕高度時(shí)返回0 } else { objArray[index].y +=5; //否則一直加下去 } } } setInterval("drawSnow()",30); //調(diào)用計(jì)時(shí)器 </script>
看完上述內(nèi)容,你們掌握使用JavaScript怎么實(shí)現(xiàn)一個(gè)雪花飄落特效的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。