您當(dāng)前位置:圖趣網(wǎng)(Tuquu) >> 網(wǎng)頁設(shè)計(jì)教程 >> 移動前端 >> 瀏覽設(shè)計(jì)教程

畫出你的風(fēng)格:HTML5創(chuàng)意畫板的設(shè)計(jì)教程(4)

的區(qū)別:

表格中明顯看出方案一都是孤立的點(diǎn),而方案二每個點(diǎn)都會有兩種狀態(tài),將這兩種狀態(tài)下的點(diǎn)連起來就會形成銜接的較好的效果。

因?yàn)榛A(chǔ)的內(nèi)容在上面已經(jīng)講述了,所以在這里我也不重復(fù)了,需要注意的是當(dāng)前點(diǎn)與上一個點(diǎn)重復(fù)時需要做一下處理,否則頁面無法繪制出來。

if(pos.x==next_pos.x&&pos.y==next_pos.y){
	ctx.arc(pos.x,pos.y,DEFAULT_BRUSH_SIZE/1.7,0,Math.PI * 2,true);
	ctx.fill();//填充繪畫路徑}
else{
	ctx.moveTo(pos.x,pos.y);
	ctx.lineTo(next_pos.x,next_pos.y);
	ctx.stroke();
}

為了方便講解,我這里采用的都是面向過程的方法,在比較大的應(yīng)用中,我們要盡可能采用面向?qū)ο蟮姆椒ǎ锰幨遣谎远鞯?,不僅能讓代碼條理清晰,更有較好的擴(kuò)展性,方便二次開發(fā)和模塊復(fù)用。使用面向?qū)ο蠓椒ǖ拇a請查看這里(這里會使用了point函數(shù)類,覆蓋了set和update等方法)請查看DEMO3_1(http://runjs.cn/detail/gvfyrswu)。

研究技術(shù)的時候,我們需要舉一反三,顯然現(xiàn)在的方法還是不夠完善。能不能將所有的點(diǎn)都記錄下來,因?yàn)槊總€時間間隔單位,都會損失掉很多的點(diǎn),為了讓畫出來的圖更加圓滑,我們要將所有的點(diǎn)都記錄下來,并且效率又能得到優(yōu)化,我在這里提出一個解決方案。

用數(shù)組記錄下所有的路徑,然后用堆棧的push方法將點(diǎn)添加到數(shù)組中,為了達(dá)到更好的效率,我們可以采用一維數(shù)組,分別用兩個數(shù)組記錄橫坐標(biāo)和縱坐標(biāo),具體的實(shí)現(xiàn)我就不貼代碼了,大家有余力的話可以當(dāng)作一個小小的作業(yè),參照我的這個頁面例子自己編寫代碼實(shí)現(xiàn),頁面中會有代碼注釋的。

我們實(shí)現(xiàn)了繪制功能,我們還需要對繪制的圖片進(jìn)行擦除。不要嘗試采用transparent或者rgba(x,x,x,0)這樣的顏色值繪制,因?yàn)檫@樣頁面便不會繪制出任何東西,最實(shí)用的方法就是繪制背景顏色,如果背景是圖片,那就重繪背景圖片,然后就原來的內(nèi)容的其他部分繪制到畫布中。具體查看demo3_2(http://runjs.cn/detail/jywf4qv1

[教程作者:admin]
免責(zé)聲明:本站文章系圖趣網(wǎng)整理發(fā)布,如需轉(zhuǎn)載,請注明出處,素材資料僅供個人學(xué)習(xí)與參考,請勿用于商業(yè)用途!
本文地址:http://irelandcustomcontracting.com/tutorial/wd1347.html
overflow:hidden真的失效了嗎
網(wǎng)頁前端開發(fā)jQuery事件編寫進(jìn)階
圖趣網(wǎng)微信
建議反饋
×