网站小编 2015-04-27 11:10
HTML5 canvas标签实现刮刮卡效果 你玩过刮刮卡么?一不小心可以中奖的那种。今天我给大家分享一个基于HTML5技术实现的刮刮卡效果,在PC上只需按住鼠标,在手机上你只需按住指头,轻轻刮去图层就可以模拟真实的刮奖效果。
[attachment=189449]
]pNM~,源码下载: idBdaZg
我们利用HTML5的画布Canvas,结合其提供的API,在Canvas元素上绘制一个灰色蒙层,然后通过检测用户鼠标移到和手势来绘制一个透明的图形,这样就能看到Canvas背景下的真实图片,就达到刮刮卡效果。 bh" Caz.(t
然后进入主体,当检测到图片加载完的时候,首先定义一些属性和函数,函数layer()用来绘制一个灰色的正方形,eventDown()定义了按下事件eventUp()定义了松开事件,eventMove()定义了移动事件,其中当按下时,获取坐标位移,并通过arc(x, y, 10, 0, Math.PI * 2)来绘制小圆点。 93)1
O8*yho
#3C]"
代码如下: Zh:@AFz:R
b5 AP{ #
img.addEventListener('load', function(e) { 5'rP-z~ u
var ctx; GKXd"8z]
var w = img.width, St3/mDtH
h = img.height; B%co`0$
var offsetX = canvas.offsetLeft, Xj6?,J
offsetY = canvas.offsetTop; gr>>]C$
var mousedown = false; .L3D]
(ap,3$hS
function layer(ctx) { Ap(>mUs!i
ctx.fillStyle = 'gray'; - [vH4~
ctx.fillRect(0, 0, w, h); om0g'Qa
} =eeZtj.
KupQtT<
function eventDown(e){ I|P#|0< 2
e.preventDefault(); Y7@$#/1
mousedown=true; G8CM
} &(X-b"2
$@ZrGT
function eventUp(e){ ,6T3:qkkvF
e.preventDefault(); ?wj1t!83
mousedown=false; dj:6c@n
} Cq%1j[
j !rQa^
function eventMove(e){
8UN7(J
`oGL==
代码如下: ]Geg;[t
hV7]/z!d
img.addEventListener('load', function(e) { `78)|a*R.
//..接上段代码 4-veO3&.h
canvas.width=w; r q_0"A
canvas.height=h; E\dJb}"x %
canvas.style.backgroundImage='url('+img.src+')'; =& =#G3f
ctx=canvas.getContext('2d'); &d/x1=
ctx.fillStyle='transparent'; 2qxed e
ctx.fillRect(0, 0, w, h);//绘制矩形 9L9+zs3k
layer(ctx); b?{\t;
:FqHMN
ctx.globalCompositeOperation = 'destination-out'; F>/"If#
)7}f.
canvas.addEventListener('touchstart', eventDown); =UMqa;\K
canvas.addEventListener('touchend', eventUp); @Rp#*{
canvas.addEventListener('touchmove', eventMove); aokV'6
canvas.addEventListener('mousedown', eventDown); ~s4o1^6L
canvas.addEventListener('mouseup', eventUp); }{(J*T
canvas.addEventListener('mousemove', eventMove); +Ssu^>D
Hm*?<o9mxC
你可以下载DEMO中的完整的代码,你可以根据实际需求,结合后台程序与数据库,完成一个真正的刮刮卡程序。 5 i;n:&Y