《小白H5成長(zhǎng)之路46》與canvas的首次愉快會(huì)面

"朱哥!JavaScript這幾天學(xué)的腦子都發(fā)熱了,我怎么感覺(jué)越來(lái)越枯燥了!"小白一大早就向老朱抱怨道。

老朱:“對(duì)象這塊知識(shí)是js自始至終永遠(yuǎn)離不開(kāi)的內(nèi)容,而類(lèi)又是對(duì)象的抽象,所以你前期了解類(lèi)的知識(shí)還是有必要的,不過(guò)我們不是還沒(méi)有深入學(xué)習(xí)類(lèi)么!”

小白:“還沒(méi)有深入學(xué)習(xí)?”

老朱:“恩,其實(shí)還有一種終極類(lèi)的繼承模式我們沒(méi)有說(shuō),前兩天我們做的類(lèi)的繼承看上去功能實(shí)現(xiàn)了,但是每次實(shí)例化的時(shí)候都要重新執(zhí)行一遍父類(lèi)的構(gòu)造函數(shù),效率上還是差點(diǎn),終極類(lèi)繼承就能完美解決這些問(wèn)題,不過(guò)我們暫時(shí)先不討論,等你js再熟悉一點(diǎn)我們?cè)僬f(shuō),今天咱聊個(gè)有意思的功能——畫(huà)布(canvas)?!?/p>

小白:“好??!終于到畫(huà)布了,早就聽(tīng)說(shuō)HTML5新增了畫(huà)布功能,到現(xiàn)在還沒(méi)碰過(guò)它呢!”

“canvas就是一個(gè)繪圖的容器,我們一樣可以通過(guò)css對(duì)它進(jìn)行樣式控制。你看上面的布局顯示效果如下。在畫(huà)布上點(diǎn)右鍵可以看到,它就是一個(gè)圖片?!?/p>

“別小看這一小小的canvas標(biāo)簽,它的功能強(qiáng)大到爆,它的核心功能就是位圖重繪,它可以把一張圖加載到內(nèi)存中重新繪制到canvas中(注意不是插入,是重新繪制),也可以把一張圖加載到內(nèi)存中進(jìn)行切片繪制?!?/p>

“比如這張我從網(wǎng)上隨便搜的圖片,通過(guò)canvas可以把這張圖分成四個(gè)切片,按需繪制,網(wǎng)頁(yè)游戲里面的任務(wù)場(chǎng)景等控制都是通過(guò)canvas重繪完成的。”

小白驚訝的說(shuō):“怪不得現(xiàn)在很多游戲可以在網(wǎng)頁(yè)上直接玩,原來(lái)是canvas實(shí)現(xiàn)的??!”

老朱:“恩,是啊,雖然現(xiàn)在還有很多flash制作的游戲,不過(guò)html5游戲占有率正在逐步增加?!?/p>

小白:“學(xué)會(huì)canvas就可以做游戲了么?趕緊教教我吧!”

老朱:“做游戲牽扯的功能太多了,等你把html5用的很熟的時(shí)候再想著去做游戲吧!現(xiàn)在能把canvas用在web前端應(yīng)用中就已經(jīng)很不錯(cuò)了?!?/p>

老朱接著說(shuō):“通過(guò)document.getElementById('mycanvas')可以拿到canvas對(duì)象,如果要在canvas上畫(huà)圖,我們可以使用getContext方法獲取繪圖對(duì)象?!?/p>

“ctx是一個(gè)CanvasRenderingContext2D對(duì)象,通過(guò)ctx我們可以設(shè)定繪圖的填充色fillStyle、繪制圖形fillRect等操作,具體ctx能夠做哪些繪圖操作我們后面會(huì)繼續(xù)討論,你有時(shí)間先自己看看它有哪些屬性和方法。剛才的代碼繪制出來(lái)的圖形你看看結(jié)果”

“這個(gè)通過(guò)動(dòng)態(tài)繪制的圖片通過(guò)鼠標(biāo)右鍵可以直接保存到本地!”

小白突然跳出來(lái)一句:“既然能在canvas中重繪圖片,那是不是很多本地的圖片我們先在canvas中重繪然后再上傳到服務(wù)器就可以實(shí)現(xiàn)圖片壓縮呢?”

老朱:“哇!小白你現(xiàn)在思路很寬??!確實(shí)可以,不但能壓縮圖片還能添加水印和裁剪,canvas了解以后我們就做一個(gè)圖片上傳的功能練練手。你先自己熟悉一下canvas標(biāo)簽相關(guān)的屬性和方法吧!”


想學(xué)H5的朋友可以關(guān)注老爐,您的關(guān)注是我持續(xù)更新《小白HTML5成長(zhǎng)之路》的動(dòng)力!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一:canvas簡(jiǎn)介 1.1什么是canvas? ①:canvas是HTML5提供的一種新標(biāo)簽 ②:HTML5 ...
    GreenHand1閱讀 4,881評(píng)論 2 32
  • 一、canvas簡(jiǎn)介 1.1 什么是canvas?(了解) 是HTML5提供的一種新標(biāo)簽 Canvas是一個(gè)矩形區(qū)...
    Looog閱讀 4,038評(píng)論 3 40
  • 一、canvas簡(jiǎn)介 1.1 什么是canvas?(了解) 是HTML5提供的一種新標(biāo)簽 Canvas是一個(gè)矩形區(qū)...
    J_L_L閱讀 1,690評(píng)論 0 4
  • 啥是canvas? HTML5 標(biāo)簽用于繪制圖像(通過(guò)腳本,通常是 JavaScript)。不過(guò), 元素本身...
    kiaizi閱讀 854評(píng)論 0 4
  • 千孝難能慰母辛,萬(wàn)般難付養(yǎng)之恩。 唯能陪伴親長(zhǎng)親,最稱(chēng)當(dāng)推此孝心。 注:母親節(jié)的愿望
    徐一村閱讀 315評(píng)論 3 16

友情鏈接更多精彩內(nèi)容