校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > H5最強(qiáng)接口之canvas實(shí)現(xiàn)動(dòng)態(tài)圖形功能

H5最強(qiáng)接口之canvas實(shí)現(xiàn)動(dòng)態(tài)圖形功能

熱門標(biāo)簽:智能電銷機(jī)器人被禁用了么 欣鼎電銷機(jī)器人 效果 惡搞電話機(jī)器人 高德地圖標(biāo)注商戶怎么標(biāo) 地圖標(biāo)注軟件打印出來 ok電銷機(jī)器人 黃石ai電銷機(jī)器人呼叫中心 電話機(jī)器人技術(shù) 如何查看地圖標(biāo)注

上個(gè)文章中我們分享了如何利用canvas來進(jìn)行圖形繪制,但是繪制的都是靜態(tài)圖形,本周我們就來學(xué)習(xí)如何利用canvas進(jìn)行動(dòng)態(tài)圖形繪制。

什么是動(dòng)畫?

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

我們可以用一個(gè)工具展示動(dòng)畫是什么?

這是利用PPT繪制出的一個(gè)動(dòng)畫效果

根據(jù)以上PPT繪制出的一個(gè)動(dòng)畫效果我們可以看到,快速在幾張PPT頁面進(jìn)行切換時(shí)連起來看到的就是一個(gè)動(dòng)畫效果。

這就是動(dòng)畫實(shí)現(xiàn)的基本要素:

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

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

那么我們在canvas中如何實(shí)現(xiàn)這兩個(gè)條件呢?

如何在1s內(nèi)繪制60張圖形

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

什么是定時(shí)器?

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

那么我們就用這個(gè)來實(shí)現(xiàn)我們所需要的每隔1/60s繪制一張圖形

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

最終效果

但是現(xiàn)在還沒有一個(gè)動(dòng)畫效果,因?yàn)?s內(nèi)繪制的60張圖形都是一模一樣的,所以接下來就要在每一張圖形繪制的時(shí)候改變元素的狀態(tài)。

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

(537-631-707)

如何改變元素的狀態(tài)?

一個(gè)圓的位置是由圓心的坐標(biāo)決定的,那么我們在每次繪制canvas的時(shí)候就改變一次元素的位置即可

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

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

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

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

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

這樣我們就能得到一個(gè)運(yùn)動(dòng)的圓了

總結(jié)

以上所述是小編給大家介紹的H5最強(qiáng)接口之canvas實(shí)現(xiàn)動(dòng)態(tài)圖形功能 ,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
 

標(biāo)簽:萍鄉(xiāng) 中山 金昌 盤錦 綏化 赤峰 阿壩 聊城

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《H5最強(qiáng)接口之canvas實(shí)現(xiàn)動(dòng)態(tài)圖形功能》,本文關(guān)鍵詞  最強(qiáng),接口,之,canvas,實(shí)現(xiàn),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《H5最強(qiáng)接口之canvas實(shí)現(xiàn)動(dòng)態(tài)圖形功能》相關(guān)的同類信息!
  • 本頁收集關(guān)于H5最強(qiáng)接口之canvas實(shí)現(xiàn)動(dòng)態(tài)圖形功能的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 林周县| 阿图什市| 霍山县| 鲁山县| 巴林左旗| 色达县| 嘉定区| 沂水县| 阿勒泰市| 嵩明县| 余干县| 曲阜市| 望都县| 阆中市| 台安县| 西和县| 抚顺市| 乌什县| 毕节市| 托里县| 策勒县| 郎溪县| 冀州市| 萨嘎县| 乐昌市| 怀来县| 夹江县| 天镇县| 彭山县| 尉犁县| 武穴市| 江安县| 塔城市| 修文县| 千阳县| 霍城县| 金阳县| 十堰市| 星子县| 上林县| 廊坊市|