最近做了个情人节表白的项目,表白内容时被遮盖的,刮开后才能显示,并且刮开一定比例后清空所有遮罩。
  function guaguale(obj,w,h){//obj时canvas元素
var canva2D=obj.getContext("2d");
var src = "cover.png";//设置遮罩图片
var img = new Image();
img.src=src;
img.onload = function() {//图片加载完成后渲染
canva2D.drawImage(img, 0, 0, w, h);
}
function lottery(x,y,c){//清除以(x,y)为中心的四周边长20px的正方形的遮罩,c时canvas对象
c.clearRect(x-10,y-10,20,20);
}
obj.addEventListener('touchmove',function(event){
if(event.targetTouches.length == 1){//一个手指才能刮
event.preventDefault();// 阻止浏览器默认事件,重要
var touch = event.targetTouches[0];
var canavOffest = $(obj).offset();//获取元素到屏幕两边的距离
var canvX=Math.floor(touch.pageX - canavOffest.left);//手指到canvas元素左边的距离
var canvY=Math.floor(touch.pageY-canavOffest.top); //手指到canvas元素上边的距离
lottery(canvX,canvY,canva2D);
}
},false);
obj.addEventListener('touchend',function(event){//每次手指离开canvas时计算刮开的比例
event.preventDefault();// 阻止浏览器默认事件,重要
var data = canva2D.getImageData(0, 0, w, h).data,//获取整个canvas的元素点
scrapeNum = 0,area = w * h;
for(var i = 3, len = data.length; i < len; i += 4){
if(data[i] === 0){
scrapeNum ++;
}
}
if(scrapeNum > area * 0.5){//达到一定比例后清除所有
canva2D.clearRect(0, 0, w, h);
}
},false); }
最简单的文字及代码解答复杂的功能,不做多余的文字,如有疑问之处,请留言互相交流学习,本人也在爬坑中。

利用canvas实现刮刮乐效果的更多相关文章

  1. 用HTML5 Canvas 做擦除及扩散效果

    2013年的时候曾经使用canvas实现了一个擦除效果的需求,即模拟用户在模糊的玻璃上擦除水雾看到清晰景色的交互效果.好在2012年的时候学习HTML5的时候研究过canvas了,所以在比较短的时间内 ...

  2. 【Android界面实现】使用Canvas对象实现“刮刮乐”效果

    在淘宝.京东等电商举办活动的时候,常常能够看到在移动client推出的各种刮奖活动,而这样的活动也受到了非常多人的喜爱.从client的体验来说,这样的效果应该是通过网页来实现的,那么,我们使用And ...

  3. canvas刮刮乐效果(pc端&H5、zepto-touchmove)

    一.html <div id="canvasArea" style="width:300px;height:200px;position:relative;&quo ...

  4. 游戏的套路你知道吗? H5 Canvas刮刮乐

    玩游戏的人 很多时候都会遇到翻牌子  开宝箱. 总有人傻傻的在哪里还纠结很久到底点哪一个! 纠结  指不定翻哪一个会多一点,你明明看到那个卡片的奖项多 . 那我就告诉你好了  其实很多时候在你点开那个 ...

  5. H5 Canvas刮刮乐

    玩游戏的人 很多时候都会遇到翻牌子  开宝箱. 总有人傻傻的在哪里还纠结很久到底点哪一个! 纠结  指不定翻哪一个会多一点,你明明看到那个卡片的奖项多 . 那我就告诉你好了  其实很多时候在你点开那个 ...

  6. canvas刮刮乐

    这周有点迷茫,不知道干嘛了,一天天就过去了!我在博客右侧公告栏加了qq交流,各位有好的主题,或者有趣的技术,欢迎交流!今天突发奇想,就写了2个h5 canvas的demo玩玩! demo一:刮刮乐 舍 ...

  7. HTML5 简单实现刮刮乐效果

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. HTML5 CSS3 诱人的实例 :canvas 模拟实现电子彩票刮刮乐

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/34089553 今天给大家带来一个刮刮乐的小例子~基于HTML5 canvas的, ...

  9. [cocos2d-js]cc.RenderTexture几种用法(数字图片、刮刮乐效果)

    [转]http://blog.csdn.net/realcrazysun1/article/details/42393629 本文基于cocos2d-js 3.0版本引擎开发 RenderTextur ...

随机推荐

  1. 关于在centos6 + grub的旧版本中,如何关闭CPU throttling

    由于个人需求,要编译安装ATLAS库,其中就有关闭CPU throttling的步骤, 最常规简单的方法是修改grub /etc/default/grub/ 之后再接一些简单的步骤 + 重启就完成了. ...

  2. gson格式化参数 对象转Map

    前台传json到后台接收: String  params = request.getParameters("paramtes"); Map<String, Map<St ...

  3. c++ protected 访问限定

    class A { protected: int mA; }; class B : public A{ public: void Func() { mA = 0; // ok A *a = this; ...

  4. 初学python---排序

    1.永久性排序 sort() a = [12,45,1,25,3] a.sort() print(a)  ----[1, 3, 12, 25, 45] 2.临时排序 sorted() a = [12, ...

  5. 大数据入门到精通16--hive 的条件语句和聚合函数

    一.条件表达 case when ... then when .... then ... when ... then ...end select film_id,rpad(title,20," ...

  6. BigDecimal 类型转换、运算、比较

    序:Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算.双精度浮点型变量double可以处理16位有效数.在实际应用中,需要对更大或者更小的数 ...

  7. 20. Valid Parentheses (JAVA)

    Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the inpu ...

  8. WEB-INF目录下的jsp怎么引用外部文件:js,css等

    在项目中,为了安全.我们通常会将jsp文件放在WEB-INF下面,对于放在WEB-INF下面的js或是css等资源文件.我们通常可以通过相对路径来引用,而如果是放在WEB-INF之外的js 或是 cs ...

  9. css与dom的渲染与解析

    js阻塞文档渲染与解析那么css呢? 结论一.css:阻塞渲染,不阻塞dom解析 <head> <script> document.addEventListener('DOMC ...

  10. php tp3.2生成二维码

    public function qrcode() { // 二维码链接 $href = 'http://' . $_SERVER['HTTP_HOST'] . '/?g=diapp&m=reg ...