亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        網(wǎng)頁中基于HTML5 canvas的動畫實(shí)現(xiàn)

        2019-09-16 13:04:46龔麗
        數(shù)碼世界 2019年7期

        龔麗

        摘要:canvas是HTML5新增的一個非常重要的元素,通過這個元素,我們可以在網(wǎng)頁上創(chuàng)建畫布,并在畫布上繪制任意圖形或圖像。canvas還有一個特性就是可以在其內(nèi)部創(chuàng)建動畫,通過設(shè)置時(shí)間循環(huán),讓圖形或圖像動起來。

        關(guān)鍵詞:HTML5 canvas元素 繪制圖形 drawlmage() setlnterval()

        引言

        1基本圖形繪制

        在網(wǎng)頁中繪制基本圖形,需要經(jīng)過以下3個步驟:

        (1)在HTML頁面文檔中放置一個canvas元素,相當(dāng)于創(chuàng)建了一個矩形繪圖區(qū)域,并設(shè)置canvas元素的id。

        (3)通過繪圖API在頁面中繪制各種圖形。

        下面我們舉例來看矩形、圓形的繪制編程。

        首先,在HTML文檔中放置元素,元素本身是不包含寬度、高度及內(nèi)容,也不會在屏幕上有任何顯示,所以大部分情況下在創(chuàng)建時(shí)注明寬度及高度,并設(shè)置id。

        在瀏覽器運(yùn)行結(jié)果如下圖1。

        2在canvas中繪制圖像

        在HTML5中,除了可以繪制形狀,也可以通過canvas API繪制圖像文件,并對圖像進(jìn)行平鋪、裁剪、像素處理等操作。

        繪制圖像時(shí),需要使用drawlmage()方法,該方法有3種調(diào)用格式:

        ctx.drawlmage(image, x,y);

        其中l(wèi)rnage為圖像對象,x、y為繪制時(shí)該圖像在畫布中的起始坐標(biāo)。

        ctx.drawlmage(image, x,y.w, h);

        前三個參數(shù)與第一種調(diào)用格式相同,w、h為圖像縮放至畫布中的寬度和高度。

        ctx. drawlmage(image, sx.sy.sw.sh.dx. chr. dw, dh);

        這種調(diào)用格式有9個參數(shù),主要實(shí)現(xiàn)對原圖的局部或全部顯示。其中image,dx,dy, dw,dh的用法與第二種格式相同,參數(shù)sx,sy,sw,sh表示源圖像需要裁剪的范圍。

        繪制圖像時(shí)首先使用不帶參數(shù)的new方法創(chuàng)建Image對象,并設(shè)置Image對象的src屬性,即需要繪制的圖像文件路徑。再使用drawlmage0方法繪制。比如我們將一張風(fēng)車圖像繪制到canvas畫布中。代碼如下:

        在瀏覽器運(yùn)行結(jié)果如下圖2。

        3動畫實(shí)現(xiàn)

        (1)編寫繪制圖形或圖像的函數(shù);

        (2)自定義一個函數(shù),用于圖形或圖像的移動或其他動作;

        (3)使用setlnterval()方法設(shè)置動畫執(zhí)行的間隔時(shí)間,反復(fù)執(zhí)行上面的自定義函數(shù)。

        (4)當(dāng)需要停止循環(huán)時(shí),用clearlnterval()清空計(jì)時(shí)器。

        setlnterval方法為HTML中固有的方法,setlnterval()每隔一段時(shí)間調(diào)用一次函數(shù),即設(shè)置循環(huán)的計(jì)時(shí)器。該方法接受兩個參數(shù),第一個參數(shù)表示執(zhí)行的函數(shù),第二個參數(shù)為時(shí)間間隔,單位為毫秒。編寫動畫腳本時(shí)有一點(diǎn)需要特別注意,當(dāng)我們移動繪制好的圖形或圖像時(shí),其實(shí)就是對圖形或圖像進(jìn)行重繪,這時(shí)要先清空,如果不清空,新畫的形狀就會重疊到原形狀上。

        運(yùn)行結(jié)果是小球會在畫布框中上下左右來回移動碰到墻(即邊框)則反彈。

        圖像動畫

        我們再來看一個圖像動畫的實(shí)現(xiàn),在canvas中繪制風(fēng)車圖像,并讓風(fēng)車旋轉(zhuǎn)起來。

        translate0方法能平移坐標(biāo)原點(diǎn),在此例中我們把坐標(biāo)原點(diǎn)從畫布左上角的默認(rèn)位置移動到畫布中心,這樣圖形圍繞原點(diǎn)旋轉(zhuǎn),就會在畫布中間。它的兩個參數(shù)分別是x方向移動的值及y方向移動的值。rotate0方法能將原點(diǎn)坐標(biāo)進(jìn)行旋轉(zhuǎn),從而實(shí)現(xiàn)圖形的旋轉(zhuǎn)。它只有一個參數(shù),即旋轉(zhuǎn)的角度。旋轉(zhuǎn)默認(rèn)以順時(shí)針方向進(jìn)行,要想逆時(shí)針旋轉(zhuǎn),則將角度設(shè)定為負(fù)數(shù)就可以了。

        4結(jié)束語

        在中創(chuàng)建動畫雖然實(shí)現(xiàn)起來比較簡單,但不斷的圖形重繪非常消耗CPU資源,若需要在移動設(shè)備的瀏覽器中使用,必須考慮動畫(或者游戲)的優(yōu)化。比如上例中的風(fēng)車旋轉(zhuǎn)動畫,由于要不斷重繪風(fēng)車圖像,該過程中,當(dāng)擦除整個canvas后,瀏覽器到達(dá)重繪點(diǎn),會繪制空白的canvas,從而造成視覺上的閃爍問題??梢圆捎秒p緩沖方法來解決,即獲取到頁面中的canvas對象之后,創(chuàng)建一個與頁面canvas同樣大小的緩沖canvas對象。繪圖時(shí)先將圖像繪制到緩沖canvas中,等到圖像繪制完全后再把整個緩沖canvas繪制到頁面canvas中。

        參考文獻(xiàn)

        [1]《HTML5從入門到精通》明日科技編著.北京:清華大學(xué)出版社,2012: 347-348

        [2]《HTML5與CSS3權(quán)威指南》陸凌牛著,北京:機(jī)械工業(yè)出版社,2012: 107-111

        [3]《HTML5實(shí)戰(zhàn)》 陶國榮著,北京:機(jī)械工業(yè)出版社,2012: 185-188

        97伦伦午夜电影理伦片| 在线中文字幕一区二区| 丰满人妻熟妇乱又仑精品| 48沈阳熟女高潮嗷嗷叫| 国产免费资源| 亚州韩国日本区一区二区片| 日本一区二区三区视频免费观看| 欧美牲交a欧美牲交aⅴ免费真| 亚洲自偷自偷偷色无码中文| 中文无码制服丝袜人妻AV| 亚洲中文字幕乱码一二三| 亚洲乱码国产乱码精品精| 国内揄拍国内精品少妇国语| 亚洲日韩精品AⅤ片无码富二代| 亚洲三级中文字幕乱码| 夜夜春亚洲嫩草影院| 精品人体无码一区二区三区| 中文字幕亚洲精品人妻| 久久伊人亚洲精品视频| 影音先锋中文字幕无码资源站 | 日本丰满少妇高潮呻吟| 中文字幕在线乱码av| 香港台湾经典三级a视频| 黄视频国产| 日本激情一区二区三区| 亚洲中文字幕日产无码| 国产精品无码一区二区三区免费| 亚洲AV秘 无码一区二区三| 日本不卡视频一区二区三区| 日日天干夜夜狠狠爱| 亚洲综合婷婷久久| 美女草逼视频免费播放| 80s国产成年女人毛片| 亚洲av无码专区国产乱码不卡| 久久99久久99精品免视看国产成人| 国内自拍视频一区二区三区| 被黑人猛烈30分钟视频| 精品国产免费Av无码久久久| 国产成av人在线观看| 精品人妻av区乱码| 99精品电影一区二区免费看|