继上篇翻翻乐之后,又来刮刮乐。还是先上效果图:

 

开始demo的世界:

1.css去绘制界面效果。(源码提供

2.原理:要实现刮刮卡内容的出现,我用div做了背景层去显示刮出的内容结果【重点】。中间Canvas区域去实现刮刮的效果。

3.构建界面效果,背景层zj为挂出效果。Canvas去做动画

1  <div class="zj">
2 <canvas id="CanvasLe" width="280" height="140" style="margin-top:10px;"></canvas>
3  </div>
4 
5 <style>.zj{background:url("zj.png") no-repeat ;}</style>

4.开始动画

先绘制 ‘灰色’ ,然后在鼠标的移动事件Canavas.onmousemove去计算 滑动的坐标值,然后clearRect方法去清除该坐标的色素。

 1 window.onload = function(){
 2         init();
 3     }
 4     var imageWidth = "280";
 5     var imageheight = "140";
 6     function init(){
 7     //定义绘画宽 高
 8     
 9     //定义Canvas对象
10     var Canavas = document.getElementById("CanvasLe");
11     var Context2D = Canavas.getContext("2d");
12         
13     var bool =true;
14     Context2D.fillStyle='#cccccc';    //设置覆盖层的颜色
15     Context2D.fillRect(0,0,imageWidth,imageheight);    //设置覆盖的区域
16 //增加Canvas鼠标滑动事件
17     Canavas.onmousemove = function(e) {
18         var canvasOffset = $(Canavas).offset();
19         var canvasX = Math.floor(e.pageX - canvasOffset.left);
20         var canvasY = Math.floor(e.pageY - canvasOffset.top);
21         canvasY += parseInt(imageheight);
22         lottery(canvasX,canvasY,Context2D);
23     }
24     }
25 //刮刮函数
26     function lottery(x,y,c){
27         c.clearRect(x,y-imageheight,20,20);
28     }

好了,效果很明显可以根据滑动坐标清除色素块。

要是在移动手机设备上运行以上还不行,还需要加入触屏滑动事件touchmove。接下来就给去监听这个事件

 1 Canavas.addEventListener('touchmove', function(event) {
 2         // 如果这个元素的位置内只有一个手指的话
 3         if (event.targetTouches.length == 1) {
 4             event.preventDefault();// 阻止浏览器默认事件,重要 
 5             var touch = event.targetTouches[0];
 6             // 把元素放在手指所在的位置
 7             var canvasOffset = $(Canavas).offset();
 8             var canvasX = Math.floor(touch.pageX - canvasOffset.left);
 9             var canvasY = Math.floor(touch.pageY - canvasOffset.top);
10              lottery(touch.pageX,touch.pageY,Context2D);
11         }
12     }, false);

ok,大功告成。实现了刮刮卡的效果。

各位园友们可以进一步扩展,共同学习是进步的阶梯。

 

 

补充:谢谢各位园友的指出,赶紧修复源码。

测试都通过,遇到一个问题在 IE11中 background:url("s_bd.jpg") 为什么无效果,请各位高手给我指点指点,先谢谢

源码猛击 这里[修复]

 

posted on 2013-12-07 11:05  一汪海水  阅读(4961)  评论(10编辑  收藏  举报