利用canvas实现刮刮乐效果
最近做了个情人节表白的项目,表白内容时被遮盖的,刮开后才能显示,并且刮开一定比例后清空所有遮罩。
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实现刮刮乐效果的更多相关文章
- 用HTML5 Canvas 做擦除及扩散效果
2013年的时候曾经使用canvas实现了一个擦除效果的需求,即模拟用户在模糊的玻璃上擦除水雾看到清晰景色的交互效果.好在2012年的时候学习HTML5的时候研究过canvas了,所以在比较短的时间内 ...
- 【Android界面实现】使用Canvas对象实现“刮刮乐”效果
在淘宝.京东等电商举办活动的时候,常常能够看到在移动client推出的各种刮奖活动,而这样的活动也受到了非常多人的喜爱.从client的体验来说,这样的效果应该是通过网页来实现的,那么,我们使用And ...
- canvas刮刮乐效果(pc端&H5、zepto-touchmove)
一.html <div id="canvasArea" style="width:300px;height:200px;position:relative;&quo ...
- 游戏的套路你知道吗? H5 Canvas刮刮乐
玩游戏的人 很多时候都会遇到翻牌子 开宝箱. 总有人傻傻的在哪里还纠结很久到底点哪一个! 纠结 指不定翻哪一个会多一点,你明明看到那个卡片的奖项多 . 那我就告诉你好了 其实很多时候在你点开那个 ...
- H5 Canvas刮刮乐
玩游戏的人 很多时候都会遇到翻牌子 开宝箱. 总有人傻傻的在哪里还纠结很久到底点哪一个! 纠结 指不定翻哪一个会多一点,你明明看到那个卡片的奖项多 . 那我就告诉你好了 其实很多时候在你点开那个 ...
- canvas刮刮乐
这周有点迷茫,不知道干嘛了,一天天就过去了!我在博客右侧公告栏加了qq交流,各位有好的主题,或者有趣的技术,欢迎交流!今天突发奇想,就写了2个h5 canvas的demo玩玩! demo一:刮刮乐 舍 ...
- HTML5 简单实现刮刮乐效果
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- HTML5 CSS3 诱人的实例 :canvas 模拟实现电子彩票刮刮乐
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/34089553 今天给大家带来一个刮刮乐的小例子~基于HTML5 canvas的, ...
- [cocos2d-js]cc.RenderTexture几种用法(数字图片、刮刮乐效果)
[转]http://blog.csdn.net/realcrazysun1/article/details/42393629 本文基于cocos2d-js 3.0版本引擎开发 RenderTextur ...
随机推荐
- Android中 Git 使用中几个概念
1.仓库(版本库) 版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改.删除,Git都能跟踪,以便任何时刻都可以追踪历史 ...
- Chrome添加Axure RP插件
之前一直用 Firefox 浏览器浏览原型文件,一直用不惯,而且用 Firefox 的唯一目的就是看原型.其他都是用 Chrome 浏览器,来回切换,各种麻烦,然后下定决心解决 Chrome 浏览器无 ...
- linux上如何设置网络,出现connect: network is unreachable 的问题。
发现有网友问有关ping命令出现connect: network is unreachable 的问题. 这通常是因为没正确设置ip地址. 解决方法: 在确保完善网卡驱动,以及确保将网卡驱动编译进内核 ...
- whereis命令详解
1.简介: whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b).man说明文件(参数-m)和源代码文件(参数-s).如果省略参数,则返回所有信息. 和find相比,whereis ...
- Linux系统常见的压缩与打包命令
常见的压缩文件扩展名 1.*.Z compress程序压缩的文件 2.*.gz gzip程序压缩的文件 3..bz2 bzip2程序压缩的文件 4..t ...
- Arthas的基础学习
下载与安装 wget https://alibaba.github.io/arthas/arthas-boot.jar java -jar arthas-boot.jar 启动 查看启动的帮助信息: ...
- [BZOJ2252]矩阵距离(BFS)
题意 输入矩阵m行n列(m<=500,n<=500),只含0.1,输出离每个元素距离最近的1的距离,其中距离定义为D(aij,akl)=abs(i-k)+abs(j-l). 示例: 输入: ...
- 记录Queue插入的时候报错
Queue 队列 特性 先进先出 和栈 Stack 非常相似 不过 栈 遵循 后进先出 Queue 和Stack 都存在数据并发的 问题 public static Queue<P ...
- python字符串的魔法
*首字母大写test="aslf"v=test.capitalize()print(v) *所有字母变成小写test="QWFDE"v=test.casefol ...
- Hibernate基础一
前面已经学习了Struts2的基础知识,可以自己搭建一个简单的Struts2项目!现在开始Hibernate!从基础开始! 1.web内容回顾 JavaEE三层结构(后面要看下,三层架构是怎么区分的? ...