真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

HTML5的canvas制作雪花飄落特效-創(chuàng)新互聯(lián)

這篇文章將為大家詳細講解使用HTML5的canvas制作雪花飄落特效的方法,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

我們是公司2013年成立的成都網(wǎng)站建設(shè)公司,提供網(wǎng)站建設(shè),電商網(wǎng)站設(shè)計開發(fā),外貿(mào)營銷網(wǎng)站建設(shè),響應(yīng)式網(wǎng)頁設(shè)計,小程序制作、等服務(wù)。為客戶創(chuàng)造有價值的品牌營銷體驗,讓互聯(lián)網(wǎng)提升企業(yè)的競爭力!

最終效果圖如下:

HTML5的canvas制作雪花飄落特效

圖1

一、需求分析

1、圓形雪花

本示例中雪花形狀使用圓形

2、雪花數(shù)量固定

根據(jù)圖1仔細觀察白色雪花數(shù)量,飄落過程中,整張圖的雪花數(shù)量應(yīng)該是固定的,這個需求是需要通過我們觀察分析所得。這與我們現(xiàn)實生活中看到一幅雪花滿天飛的場景是一致的。

3、雪花大小不一致

每朵雪花它們大小各有不同,也就意味著雪花的半徑是隨機的。這與我們現(xiàn)實生活中看到一幅雪花滿天飛的場景也是一致的。

4、雪花位置在移動

雪花飄落,自然它們的位置也在移動。

二、知識點

1、使用Html5 Canvas+JavaScript畫圓——構(gòu)成圓形雪花

在Html5中,需要使用Canvas同時借助JavaScript畫圓,以構(gòu)成圓形雪花——arc(x,y,r,start,stop);

2、隨機數(shù)—產(chǎn)生不同半徑、坐標(biāo)的圓形雪花

本示例中,網(wǎng)頁第一次加載時,需要生成一定數(shù)量的不同半徑及位置的雪花,故半徑、坐標(biāo)為隨機數(shù);雪花在飄落過程中,其半徑不變,坐標(biāo)在一定幅度內(nèi)變化,故此時坐標(biāo)也為隨機數(shù)——Math.random()

三、程序編寫

1、準(zhǔn)備工作

放一個畫布canvas,并且設(shè)置整個body背景色為黑色

HTML代碼:


    您的瀏覽器不支持canvas畫布   

CSS代碼:

* {   
    margin: 0;   
    padding: 0;   
}   
#mycanvas {   
    background: black;   
}

此時效果如如下: HTML5的canvas制作雪花飄落特效

注意:canvas默認是有一個初始化高度和寬度的,所以不用去糾結(jié)

2、畫布滿屏顯示

JavaScript代碼如下:

//獲取mycanvas畫布   
    var can = document.getElementById("mycanvas");   
    var ctx = can.getContext("2d");   
    //畫布寬度   
    var wid = window.innerWidth;   
    //畫布高度   
    var hei = window.innerHeight;   
    can.width=wid;   
    can.height=hei;

此時效果如如下:

HTML5的canvas制作雪花飄落特效

3、初始化生成固定數(shù)量的雪花

根據(jù)我們上述需求分析及知識點解讀,首先雪花的數(shù)量是固定的,所以我們需要定義一個變量var snow = 100;這里假設(shè)雪花數(shù)量為100,;

生成雪花的時候,每個雪花半徑、位置都不同,我們把每個雪花當(dāng)做一個對象,那么這個對象的屬性就包含:半徑、坐標(biāo)(X、Y),那么一個雪花對象可以寫成var snowOject={x:1,y:10,r:5},這里就代表一個坐標(biāo)為(1,10)半徑為5的圓形雪花;本示例中由于半徑和坐標(biāo)都為隨機數(shù),故使用Math.random()分別為100個雪花生成半徑、坐標(biāo)(X、Y);

那我們這里是100個雪花,所以為了方便后面操作,就用一個數(shù)組保存這100個雪花對象。

JavaScript代碼如下:

//雪花數(shù)目   
var snow = 100;   
//雪花坐標(biāo)、半徑   
var arr = []; //保存各圓坐標(biāo)及半徑   
for (var i = 0; i < snow; i++) {   
arr.push({   
x: Math.random() * wid,   
y: Math.random() * hei,   
r: Math.random() * 10 + 1   
})   
}

4、繪制雪花

上面我們已經(jīng)將100個雪花半徑、坐標(biāo)(X、Y)生成,下面就是循環(huán)使用canvas畫出雪花了(這里就是畫圓),這里定義一個函數(shù)

JavaScript代碼如下:

//畫雪花   
function DrawSnow() {   
    ctx.fillStyle="white";   
    ctx.beginPath();   
    for (var i = 0; i < snow; i++) {   
        var p = arr[i];   
        ctx.moveTo(p.x,p.y);   
        ctx.arc(p.x,p.y,p.r,0,2*Math.PI,false);   
    }   
    ctx.fill();   
  
    ctx.closePath();

然后調(diào)用 DrawSnow()函數(shù),效果如下:

HTML5的canvas制作雪花飄落特效

可以嘗試多次刷新網(wǎng)頁看是否會生成不同大小、位置的雪花(正常情況下是可以的),做到這里就已經(jīng)接近最終效果了

注意:由于這里需要繪制100個圓,所以每當(dāng)畫一個圓時重新定義繪制開始坐標(biāo)即:ctx.moveTo(p.x,p.y);否則會出現(xiàn)異樣效果,不信可以試試呀

5、雪花飄動

上面我們已經(jīng)畫出100個雪花,可惜只能依靠刷新網(wǎng)頁才能看到變化效果,但是我們需要實現(xiàn)的是雪花不停的移動位置。

首先我們需要借助setInterval函數(shù)不停的重畫雪花,這里間隔時間為50毫秒:setInterval(DrawSnow,50);

同時每一朵雪花的坐標(biāo)(X、Y)需要不停的改變(在一定幅度內(nèi)),我們這里的雪花是從左上方飄落到右下方,所以每朵X、Y坐標(biāo)值都在不停的增大,那我們用一個函數(shù)SnowFall()定義雪花飄過規(guī)則

該函數(shù)代碼如下:

//雪花飄落   
function SnowFall() {   
    for (var i = 0; i < snow; i++) {   
        var p = arr[i];   
        p.y += Math.random() * 2 + 1;   
        if (p.y > hei) {   
            p.y = 0;   
        }   
        p.x += Math.random() * 2 + 1;   
        if (p.x > wid) {   
            p.x = 0;   
        }   
    }   
}

然后將該函數(shù)放入DrawSnow()執(zhí)行,注意:我們每隔50毫毛重畫雪花,必須擦除畫布,所以DrawSnow()函數(shù)體內(nèi)必須在前面執(zhí)行clearRect()函數(shù),即:ctx.clearRect(0, 0, wid, hei);

此時DrawSnow函數(shù)定義如下:

//畫雪花   
function DrawSnow() {   
    ctx.clearRect(0, 0, wid, hei);   
    ctx.fillStyle = "white";   
    ctx.beginPath();   
    for (var i = 0; i < snow; i++) {   
        var p = arr[i];   
        ctx.moveTo(p.x, p.y);   
        ctx.arc(p.x, p.y, p.r, 0, 2 * Math.PI, false);   
    }   
    ctx.fill();   
    SnowFall();   
    ctx.closePath();   
}

最后執(zhí)行setInterval(DrawSnow, 50);

OK,經(jīng)過我們上述步驟,小伙伴們是否已經(jīng)對整個過程及技術(shù)實現(xiàn)很清晰了。

完整代碼如下(大家可以直接復(fù)制到自己項目中執(zhí)行,測試下效果):

  
  
  
      
          
          
          
          
      
  
      
          
            您的瀏覽器不支持canvas畫布   
          
          
      
  

以上就是HTML5的canvas制作雪花飄落特效的詳細內(nèi)容了,看完之后是否有所收獲呢?如果想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計公司行業(yè)資訊!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


文章名稱:HTML5的canvas制作雪花飄落特效-創(chuàng)新互聯(lián)
文章鏈接:http://weahome.cn/article/epjhi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部