canvas 繪製刮刮卡

2022-09-22 19:06:09 字數 1840 閱讀 5732

思路=》

用div來展示刮獎結果,用canvas繪製刮獎前展示的或者文字;將canvas疊在div上方,刮獎是只需要操作canvas配合touch事件即可簡單完成。

canvas刮獎可以用globalcompositeoperation屬性製作。

globalcompositeoperation:

屬性值描述

source-over (default)

新圖形會覆蓋在原有內容之上

destination-over

會在原有內容之下繪製新圖形

source-in

新圖形會僅僅出現與原有內容重疊的部分。其它區域都變成透明的

destination-in

原有內容中與新圖形重疊的部分會被保留,其它區域都變成透明的

source-out

結果是只有新圖形中與原有內容不重疊的部分會被繪製出來

destination-out

原有內容中與新圖形不重疊的部分會被保留

source-atop

新圖形中與原有內容重疊的部分會被繪製,並覆蓋於原有內容之上

destination-atop

原有內容中與新內容重疊的部分會被保留,並會在原有內容之下繪製新圖形

lighter

兩圖形中重疊部分作加色處理

darker

兩圖形中重疊的部分作減色處理

xor

重疊的部分會變成透明

copy

只有新圖形會被保留,其它都被清除掉

實現**

class scratch

//初始化

init()

//獲得容器的寬高(用於設定canvas寬高)

getsize()

//建立canvas並設定寬高插入容器中

createcanvas()

//繪製前景圖 必須預載入

drawbg()

}//新增touch事件

event())

obj.addeventlistener("touchmove",event=>)

obj.addeventlistener("touchend",event=>{})

}//擦拭canvas

touchcanvas(event)

if(!this

.isprize)

var e=window.event||event;

e.preventdefault();

//禁止ios和安卓預設事件頁面下拉動

this.clearcanvas(e.targettouches[0].pagex-this.left,e.targettouches[0].pagey-this

.top);

}//繪製圓形 橡皮擦

clearcanvas(x,y)

//計算透明區域

compute()

}let area= (transpixels.length / (pixels.length / 4) * 100).tofixed(2);

if(area>this

.area)

}//再來一次(重置)

reset()

}

view code

(第一次寫部落格,有錯請見諒)

canvas實現刮刮卡

canvas上下文物件的globalcompositeoperation屬性 刮刮卡功能主要是使用這個值的設定來實現的,之前介紹過globalcompositeoperation屬性共有11種值,詳細介紹可以訪問html 5 canvas 參考手冊 這裡簡單的對11種值做一下截圖 他這裡寫的源物件可...

canvas實現刮刮卡效果

目前在html5和css3的熱潮下,html頁面的效果也是層出不窮,下面我們來介紹使用canvas來模仿刮獎刮開效果。原理在需要刮出的或者文字上方蓋上一層灰色或者其他背景的canvas畫布,當手指或者滑鼠點選畫布並移動時,將畫布上移動過的軌跡變成透明即可。分析demo中在class為content的...

html5 canvas製作刮刮卡

下班後,閒著無事,剛好近期在學習畫布相關知識,就寫了個刮刮卡的demo練一下手,相容安卓 ios哦。高手路過,多多指點!刮刮卡實現原理 通過canvas繪製乙個,使用者手指觸發螢幕時,刮開當前一部分封面圖,從而顯示正文中的內容。整體運用canvas的globalcompositeoperation屬...