



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】Html5实现移动端、PC端刮刮卡效果
刚从南方回来就分了一个刮刮卡效果的页面,特么的我在烦恼怎么用H5去实现这个效果呢,好不容易写出来了,产品居然说:“既然你可以写出来这个效果那当然好了,开始我只是打算让你实现点击就出现呢!”……尼玛干嘛不早说呢?????真是自找麻烦。既然写了就分享给大家吧,这个效果其实很早就有了,只是我们不常用到罢了。H5的Canvas我很坦然的说我不会。但是既然工作上需要就需要学习一下了。虽然有demo但是自己写的时候还是出现了很多的bug。下面给大家说一下实现刮刮卡效果的步骤吧。(ps:按照我自己的demo讲了)刮刮卡需求:每一位用户有三次刮刮卡的机会本次刮刮卡的结果会覆盖上次的结果刮刮卡的中奖几率呈现为递增的曲线(保证三次中必须有一次中奖)刮出的结果包含按钮既(领取奖品or再来一次
)分享活动奖品升级(这里主要是微信分享的回调了)我们自己的需求,今天就说怎么制作刮刮卡,有这样需求的可以找我要源码第一、body创建Canvas
<div
class="info"
id="prize">
<span
id="prompt"></span>
<span
class="btn"
id="ok">领取奖品</span>
<span
class="btn"
id="no">再来一次</span>
</div>
<canvas
id="c1"
class="canvas"></canvas>这里我们首先创建了一个Canvas,并且在canvas底部加上了刮开后的效果。第二、
页面加载后开始初始化画布首先定义一些需要的变量
var
c1;
//画布
var
ctx;
//画笔
var
ismousedown;
//标志用户是否按下鼠标或开始触摸
var
isOk=0;
//标志用户是否已经刮开了一半以上
var
fontem
=
parseInt(window.getComputedStyle(document.documentElement,
null)["font-size"]);//这是为了不同分辨率上配合@media自动调节刮的宽度页面加载后开始初始化画布(这样子就可以在页面创建一个画布了)window.onload
=
function(){
c1
=
document.getElementById("c1");
//这里很关键,canvas自带两个属性width、height,我理解为画布的分辨率,跟style中的width、height意义不同。
//最好设置成跟画布在页面中的实际大小一样
//不然canvas中的坐标跟鼠标的坐标无法匹配
c1.width=c1.clientWidth;
c1.height=c1.clientHeight;
ctx
=
c1.getContext("2d");
//PC端的处理
c1.addEventListener("mousemove",eventMove,false);
c1.addEventListener("mousedown",eventDown,false);
c1.addEventListener("mouseup",eventUp,false);
//移动端的处理
c1.addEventListener('touchstart',
eventDown,false);
c1.addEventListener('touchend',
eventUp,false);
c1.addEventListener('touchmove',
eventMove,false);
//初始化
initCanvas();
}第三、画灰色的矩形铺满function
initCanvas(){//网上的做法是给canvas设置一张背景图片,我这里的做法是直接在canvas下面另外放了个div
//c1.style.backgroundImage="url(中奖图片.jpg)";
ctx.globalCompositeOperation
=
"source-over";
ctx.fillStyle
=
'#aaaaaa';
ctx.fillRect(0,0,c1.clientWidth,c1.clientHeight);
ctx.fill();
ctx.font
=
"Bold
30px
Arial";
ctx.textAlign
=
"center";
ctx.fillStyle
=
"#999999";
ctx.fillText("刮一刮",c1.width/2,50);//把这个属性设为这个就可以做出圆形橡皮擦的效果
//有些老的手机自带浏览器不支持destination-out,下面的代码中有修复的方法
ctx.globalCompositeOperation
=
'destination-out';}第四、鼠标按下和触摸开始function
eventDown(e){
e.preventDefault();
ismousedown=true;}第五、鼠标抬起和触摸结束function
eventUp(e){
e.preventDefault();
//得到canvas的全部数据
var
a
=
ctx.getImageData(0,0,c1.width,c1.height);
var
j=0;
for(var
i=3;i<a.data.length;i+=4){
if(a.data[i]==0)j++;
}
//当被刮开的区域等于一半时,则可以开始处理结果
if(j>=a.data.length/8){
isOk
=
1;
}
ismousedown=false;
}第六、鼠标移动和触摸移动
//鼠标移动
和
触摸移动
function
eventMove(e){
e.preventDefault();
if(ismousedown)
{
if(e.changedTouches){
e=e.changedTouches[e.changedTouches.length-1];
}
var
topY
=
document.getElementById("top").offsetTop;
var
oX
=
c1.offsetLeft,
oY
=
c1.offsetTop+topY;
var
x
=
(e.clientX
+
document.body.scrollLeft
||
e.pageX)
-
oX
||
0,
y
=
(e.clientY
+
document.body.scrollTop
||
e.pageY)
-
oY
||
0;
//画360度的弧线,就是一个圆,因为设置了ctx.globalCompositeOperation
=
'destination-out';
//画出来是透明的
ctx.beginPath();
ctx.arc(x,
y,
fontem*1.2,
0,
Math.PI
*
2,true);
//下面3行代码是为了修复部分手机浏览器不支持destination-out
//我也不是很清楚这样做的原理是什么
c1.style.display
=
'none';
c1.offsetHeight;
c1.style.display
=
'inherit';
ctx.fill();
}
if(isOk){
var
btn
=
document.getElementsByClassName("btn");
for(var
i=0;
i<btn.length;
i++){
btn[i].style.zIndex
=
'3';
}
doc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 附着升降脚手架安装拆卸工岗位操作规程考核试卷及答案
- 锯材定长切割工艺考核试卷及答案
- 稀土金属热处理精炼沉积工艺考核试卷及答案
- 2024新版2025秋青岛版科学六三制三年级上册教学课件:第三单元 第10课 哪杯水热
- 职业适应性测试(带答案)
- 高职课程思政教学评价的价值意蕴、实践痛点与行动路向
- 许昌职业技术考试试题及答案
- 安全生产与特种设备相关法规知识试卷含答案
- 银行主任面试题目及答案
- 银行营销技术试题及答案
- 2025年秋人教版(2024)初中数学八年级第一学期教学计划及教学进度表
- 软件行业基础知识培训课件
- GB 46039-2025混凝土外加剂安全技术规范
- 传染病医院质量控制检查标准表
- 卷烟零售户培训课件
- 刑事诉讼法案例课件
- 医院净化空调系统基本知识
- 内蒙锡林郭勒盟卫生系统招聘考试(护理学专业知识)题含答案2024年
- 财政专题分析报告:财政数据背后的宏观线索-国金证券
- 《智能建造概论》高职完整全套教学课件
- 110kV~750kV架空输电线路施工及验收规范
评论
0/150
提交评论