最新赞助活动温馨提示:自愿赞助服务器费用,学生和没有工作的整站资源免费下载!
头像

jQuery+html5实现彩票刮刮乐效果

来源:http://www.erdangjiade.com/ 沐浴春风 2015-08-20 20:42浏览(1635)

我们利用HTML5的画布Canvas,结合其提供的API,在Canvas元素上绘制一个灰色蒙层,然后通过检测用户鼠标移到和手势来绘制一个透明的图形,这样就能看到Canvas背景下的真实图片,就达到刮刮卡效果。

0、请不要问“在不在”之类的问题,有问题直接问!1、学生或暂时没有工作的童鞋,整站资源免费下载!2、¥9.9充值终身VIP会员,加我微信,826096331 拉你进VIP群学习!3、程序员加油,技术改变世界。在线 充值

jQuery+html5实现彩票刮刮乐效果
分类:手机特效 > canvas 难易:中级
查看演示

加我微信,拉你进VIP群学习:

下载资源 下载积分: 30 积分

HTML

<canvas></canvas>

首先禁止鼠标拖动,目的是让鼠标能在图片上实现刮彩票的效果。

var bodyStyle = document.body.style; 
bodyStyle.mozUserSelect = 'none'; 
bodyStyle.webkitUserSelect = 'none';

然后实例化图片类,获取canvas画布,并设置背景为透明和定义position为absolute。下面用到2张随机图片作为演示模型,你也可以在imgs 里面加多个图片。

var img = new Image(); 
var canvas = document.querySelector('canvas'); 
canvas.style.backgroundColor='transparent'; 
canvas.style.position = 'absolute'; 
var imgs = ['p_0.jpg','p_1.jpg']; 
var num = Math.floor(Math.random()*2); 
img.src = imgs[num];

当监听到图片加载完的时候,需定义图片的相关属性和函数,函数layer()用来绘制一个灰色的正方形,eventDown()定义了按下事件eventUp()定义了松开事件,eventMove()定义了移动事件,其中当按下时,获取坐标位移,并通过arc(x, y, 10, 0, Math.PI * 2)来绘制小圆点。

img.addEventListener('load', function(e) { 
    var ctx; 
    var w = img.width, 
        h = img.height; 
    var offsetX = canvas.offsetLeft, 
        offsetY = canvas.offsetTop; 
    var mousedown = false; 
 
    function layer(ctx) { 
        ctx.fillStyle = 'gray'; 
        ctx.fillRect(0, 0, w, h); 
    } 
 
    function eventDown(e){ 
        e.preventDefault(); 
        mousedown=true; 
    } 
 
    function eventUp(e){ 
        e.preventDefault(); 
        mousedown=false; 
    } 
 
    function eventMove(e){ 
        e.preventDefault(); 
        if(mousedown) { 
             if(e.changedTouches){ 
                 e=e.changedTouches[e.changedTouches.length-1]; 
             } 
             var x = (e.clientX + document.body.scrollLeft || e.pageX) - offsetX || 0, 
                 y = (e.clientY + document.body.scrollTop || e.pageY) - offsetY || 0; 
             with(ctx) { 
                 beginPath() 
                 arc(x, y, 10, 0, Math.PI * 2);//绘制圆点 
                 fill(); 
             } 
        } 
    } 
 
    //... 
});

最后,通过canvas调用以上函数,绘制图形,并且侦听触控及鼠标事件,调用相应的函数,我们看下代码:

img.addEventListener('load', function(e) { 
    //..接上段代码 
    canvas.width=w; 
    canvas.height=h; 
    canvas.style.backgroundImage='url('+img.src+')'; 
    ctx=canvas.getContext('2d'); 
    ctx.fillStyle='transparent'; 
    ctx.fillRect(0, 0, w, h);//绘制矩形 
    layer(ctx); 
 
    ctx.globalCompositeOperation = 'destination-out'; 
 
    canvas.addEventListener('touchstart', eventDown); 
    canvas.addEventListener('touchend', eventUp); 
    canvas.addEventListener('touchmove', eventMove); 
    canvas.addEventListener('mousedown', eventDown); 
    canvas.addEventListener('mouseup', eventUp); 
    canvas.addEventListener('mousemove', eventMove);
声明:本文为原创文章,如需转载,请注明来源erdangjiade.com并保留原文链接:https://www.erdangjiade.com/js/254.html
评论0
头像

友情提示:垃圾评论一律封号 加我微信:826096331拉你进VIP群学习群

1 2