canvas刮奖
(function (global, factory) {
typeof module === 'object' && typeof module.exports === 'object' ? module.exports = factory() :
typeof define === 'function' && define.amd ? define(factory) :
global.cavns = factory(global);
})(this, function () {
var cavns = {
position:{
oLeft:"",
oTop:""
},
ctx:"",
init : function(n){
var pic = new Image();
//pic.src ="images/lottery/lottery.png";
var src = document.getElementById("lotpng").src;
pic.src = src;
pic.onload = function(){
var canvas = document.getElementById("canvas");
cavns.ctx = canvas.getContext("2d");
cavns.ctx.beginPath();
cavns.ctx.drawImage(pic,0,0,300,180);
/*this.ctx.fillStyle = 'rgba(0,0,0, 0.5)'*/;
/*this.ctx.fillRect(0, 0, canvas.width, canvas.height);*/
cavns.ctx.closePath();
var arr = cavns.getOffset(canvas);
cavns.position.oLeft = arr[0];
cavns.position.oTop = arr[1];
}
},
getOffset:function(obj){
var valLeft = 0,valTop = 0;
function get(obj){
valLeft += obj.offsetLeft;
valTop += obj.offsetTop;
/* 不到最外层就一直调用,直到offsetParent为body*/
if (obj.offsetParent.tagName!='BODY') {
get(obj.offsetParent);
}
return [valLeft,valTop];
}
return get(obj);
},
touchstart : function(){
this.ctx.beginPath();
this.ctx.lineWidth = 25;
this.ctx.globalCompositeOperation = 'destination-out';
this.ctx.moveTo(event.touches[0].pageX-cavns.position.oLeft, event.touches[0].pageY-cavns.position.oTop);
},
touchmove : function(){
/* 根据手指移动画线,使之变透明*/
this.ctx.lineTo(event.touches[0].pageX-cavns.position.oLeft, event.touches[0].pageY-cavns.position.oTop);
/* 填充*/
this.ctx.stroke();
},
touchend : function(fn){
/* 获取imageData对象*/
var imageDate = this.ctx.getImageData(0, 0, canvas.width, canvas.height);
/* */
var allPX = imageDate.width * imageDate.height;
var iNum = 0; //记录刮开的像素点个数
for (var i = 0; i < allPX; i++) {
if (imageDate.data[i * 4 + 3] == 0) {
iNum++;
}
}
if (iNum >= allPX * 1 / 20) {
typeof fn == 'function' && fn();
}
}
}
return cavns;
});
canvas刮奖的更多相关文章
- 简单入门canvas - 通过刮奖效果来学习
一 .前言 一直在做PC端的前端开发,从互联网到行业软件.最近发现移动端已经成为前端必备技能了,真是不能停止学习.HTML5新增的一些东西,canvas是用的比较多也比较复杂的一个,简单的入门了一下, ...
- canvas写的一个刮奖效果
<!DOCTYPE html><head> <meta charset="utf-8"> <meta http-equiv="X ...
- HTML5 Canvas实战之刮奖效果
近年来由于移动设备对HTML5的较好支持,经常有活动用刮奖的效果,最近也在看H5方面的内容,就自己实现了一个,现分享出来跟大家交流. 1.效果 2.原理 原理很简单,就是在刮奖区添加两个canvas, ...
- canvas刮刮乐效果(pc端&H5、zepto-touchmove)
一.html <div id="canvasArea" style="width:300px;height:200px;position:relative;&quo ...
- 游戏的套路你知道吗? H5 Canvas刮刮乐
玩游戏的人 很多时候都会遇到翻牌子 开宝箱. 总有人傻傻的在哪里还纠结很久到底点哪一个! 纠结 指不定翻哪一个会多一点,你明明看到那个卡片的奖项多 . 那我就告诉你好了 其实很多时候在你点开那个 ...
- canvas刮刮乐和画笔
这周有点迷茫,不知道干嘛了,一天天就过去了!我在博客右侧公告栏加了qq交流,各位有好的主题,或者有趣的技术,欢迎交流!今天突发奇想,就写了2个h5 canvas的demo玩玩! demo一:刮刮乐 舍 ...
- H5 Canvas刮刮乐
玩游戏的人 很多时候都会遇到翻牌子 开宝箱. 总有人傻傻的在哪里还纠结很久到底点哪一个! 纠结 指不定翻哪一个会多一点,你明明看到那个卡片的奖项多 . 那我就告诉你好了 其实很多时候在你点开那个 ...
- canvas刮刮乐
这周有点迷茫,不知道干嘛了,一天天就过去了!我在博客右侧公告栏加了qq交流,各位有好的主题,或者有趣的技术,欢迎交流!今天突发奇想,就写了2个h5 canvas的demo玩玩! demo一:刮刮乐 舍 ...
- HTML5实现刮奖效果
原文:HTML5实现刮奖效果 要实现刮奖效果,最重要的是要找到一种方法:当刮开上层的涂层是就能看到下层的结果.而HTML5的canvas API中有一个属性globalCompositeOperati ...
随机推荐
- redis 的简单用法
使用 :下载完后 打开任务管理器 把redis_server 进程关掉, 切换到 E:\redis 中 redis-server.exe redis.windows.conf 打开一个 cmd ...
- SAP HANA HDBSQL命令
1.登录: window操作系统下面: 打开C:\Program Files\SAP\hdbclient\hdbsql.exe \c 连接数据库 connect的缩写 HANA hostname: ...
- git代理设置
git config --global http.proxy http://127.0.0.1:1080git config --global https.proxy https://127.0.0. ...
- linux配置防火墙,开启端口
Centos7,配置防火墙,开启端口 1.查看已开放的端口(默认不开放任何端口) firewall-cmd --list-ports 2.开启80端口 firewall-cmd --zone=publ ...
- 23.pyspider安装
1.pip安装pip3 install pyspider 2.验证安装 pyspider all 3.打开浏览器 输入:127.0.0.1:5000(如下图)
- 21.scrapy爬虫部署
1.启用 scrapyd 2. 在浏览器打开127.0.0.1:6800/ 3. scrapy.cfg 设置 4. 遇到问题: scrapyd-deploy 不是内部命令 编辑 两个配置文件 @ech ...
- 为啥我做的RFM模型被人说做错了,我错哪了?
本文转自知乎 作者:接地气的陈老师 ————————————————————————————————————————————————————— 有同学问:“为啥我做的RFM模型被客户/业务部门批斗,说 ...
- Android将Log写入文件
为什么要将Log写入文件 运行应用程序的时候,大多数是不会连接着IDE的: 而当应用程序崩溃时,我们需要收集复现步骤,在设备上复现,并进行Debug: 而由于Android手机的多样性,有些问题是某个 ...
- Swoole 异步mysql使用
<?php class mysql { private $param; public $db; public function __construct() { $this->db = ne ...
- groovy Date 格式化
刚开始使用Java,瞬间爱上:换了个厂接触到了groovy,开始有点嫌弃Java了... 看看时间的格式化 java玩法: new SimpleDateFormat("yyyy-MM-dd ...