中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

html5如何實現canvas動態圖形效果

發布時間:2022-02-23 15:43:12 來源:億速云 閱讀:270 作者:iii 欄目:開發技術

本篇內容主要講解“html5如何實現canvas動態圖形效果”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“html5如何實現canvas動態圖形效果”吧!

什么是動畫?

我們在繪制動畫之前必須要弄清楚什么是動畫,一個動畫最起碼需要哪些基本條件呢?

我們可以用一個工具展示動畫是什么?

這是利用PPT繪制出的一個動畫效果

動畫實現的基本要素:

單位時間內連續播放多張圖片。這個單位時間一般以秒為單位,在計算機渲染的圖形中要想獲得一個足夠流暢的視頻,每秒鐘內的圖片數量必須要大于等于顯示器的刷新頻率(這個刷新頻率一般為60hz)

每圖片內的物體狀態(大小,形狀,顏色,位置,角度等等)必須要發生改變

那么我們在canvas中如何實現這兩個條件呢?

如何在1s內繪制60張圖形

我們可以把這話變形一下,就變成每隔1/60s就繪制一張圖形。在JavaScript中要想實現每隔一段時間做一件事情,我們使用的方法是用定時器setinterval。

什么是定時器?

setinerval(function f(){},t),定時器內部可以傳入兩個參數,一個是函數,一個是時間,這個代碼的意思就是每隔t ms就執行一次函數f。

那么我們就用這個來實現我們所需要的每隔1/60s繪制一張圖形:

setInterval(function(){
canCon.fillStyle="black";
//canCon.fill的意思在這張宣紙上拿起一只畫實心圖形的筆,
//的意思就是蘸上一個黑色墨
//連起來看的話就是拿起一只畫實心圖形的筆并粘上有黑色的墨水
canCon.arc(233,233,66,0,Math.PI*2);
 //在宣紙上構思畫一個圓(圓心的X位置,Y位置,圓的半徑,從什么位置開始畫圓,畫到哪里結束);
canCon.fill();//下筆作畫
},1000/60)

但是現在還沒有一個動畫效果,因為1s內繪制的60張圖形都是一模一樣的,所以接下來就要在每一張圖形繪制的時候改變元素的狀態。

順便給大家推薦一個裙,它的前面是 537,中間是631,最后就是 707。想要學習前端的小伙伴可以加入我們一起學習,互相幫助。群里每天晚上都有大神免費直播上課,如果不是想學習的小伙伴就不要加啦。

(537-631-707)

如何改變元素的狀態?

一個圓的位置是由圓心的坐標決定的,那么我們在每次繪制canvas的時候就改變一次元素的位置即可:

vary=100;//給一個初始的圓心位置,接下來每次繪制的時候圓心的y位置都往下移動一個距離
setInterval(function(){
canCon.fillStyle="black";
//canCon.fill的意思在這張宣紙上拿起一只畫實心圖形的筆,
//的意思就是蘸上一個黑色墨
//連起來看的話就是拿起一只畫實心圖形的筆并粘上有黑色的墨水
canCon.arc(233,y++,66,0,Math.PI*2);
//在宣紙上構思畫一個圓(圓心的X位置,Y位置,圓的半徑,從什么位置開始畫圓,畫到哪里結束);
canCon.fill();//下筆作畫
},1000/60)

此時我們看到的不是一個運動的圓,更像是一個不斷延伸的進度條。原因其實很簡單,咱們在每次繪制一個新的圖形的時候沒有把原來的圖形給擦出掉了,這樣的畫面就是n多圖形疊加在一起的結果了。所以我們每次在繪制新的圖形的時候就要把原來的給擦除掉,那么如何做到呢?

vary=100;//給一個初始的圓心位置,接下來每次繪制的時候圓心的y位置都往下移動一個距離
setInterval(function(){
canCon.clearRect(0,0,500,500);//擦除一個矩形區域 矩形的左上角坐標和矩形的寬高
canCon.fillStyle="black";
//canCon.fill的意思在這張宣紙上拿起一只畫實心圖形的筆,
//的意思就是蘸上一個黑色墨
//連起來看的話就是拿起一只畫實心圖形的筆并粘上有黑色的墨水
canCon.arc(233,y++,66,0,Math.PI*2);
//在宣紙上構思畫一個圓(圓心的X位置,Y位置,圓的半徑,從什么位置開始畫圓,畫到哪里結束);
canCon.fill();//下筆作畫
},1000/60)

但此時還是沒有效果,那么到底是什么情況呢?我們可以回想一下我們小時候畫畫的場景,我們在擦除畫紙上某一區域的時候是不是需要首先把畫筆抬起來,這樣的話我們才能用橡皮擦擦掉紙上的某些區域,所以我們在擦除canvas的某個區域之前先要把筆給抬起來才行。

vary=100;//給一個初始的圓心位置,接下來每次繪制的時候圓心的y位置都往下移動一個距離
setInterval(function(){
canCon.beginPath();//把筆抬起來
canCon.clearRect(0,0,500,500);//擦除一個矩形區域 矩形的左上角坐標和矩形的寬高
canCon.fillStyle="black";
//canCon.fill的意思在這張宣紙上拿起一只畫實心圖形的筆,
//的意思就是蘸上一個黑色墨
//連起來看的話就是拿起一只畫實心圖形的筆并粘上有黑色的墨水
canCon.arc(233,y++,66,0,Math.PI*2);
 //在宣紙上構思畫一個圓(圓心的X位置,Y位置,圓的半徑,從什么位置開始畫圓,畫到哪里結束);
canCon.fill();//下筆作畫
},1000/60)

到此,相信大家對“html5如何實現canvas動態圖形效果”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

贵定县| 五常市| 镇江市| 舟曲县| 凤山县| 嫩江县| 蕲春县| 达尔| 鄂伦春自治旗| 酉阳| 巩义市| 凤山县| 宁强县| 墨玉县| 鄂托克旗| 台北市| 文化| 林西县| 镶黄旗| 梨树县| 女性| 榕江县| 阳西县| 聊城市| 兴安盟| 灵寿县| 营山县| 泰州市| 古交市| 嘉黎县| 台安县| 印江| 信丰县| 山东| 崇仁县| 旬邑县| 桐柏县| 锦屏县| 海兴县| 古田县| 大冶市|