基于canvas的刮刮奖

阅读: 评论:0

基于canvas的刮刮奖

基于canvas的刮刮奖

公司要上活动。一种类似刮刮奖的洗车游戏。网上查找了一些代码和思路,自己也来模仿一个。我的思路如下:

在一div中随机放入一些信息(如:谢谢惠顾,中奖了),然后用canvas画布遮盖此div。通过刮掉画布上的颜色层,下面的信息就显示出来了。


一些css样式:

*{padding: 0;margin: 0;}.canvas-box{width: 300px;height: 400px;margin: auto;border: 1px dashed deeppink;margin-top: 20px;font-size: 50px;text-align: center;line-height: 400px;position: relative;}#canvas{position: absolute;left: 0;top: 0;}

dom结构:

<div class="canvas-box"><canvas id="canvas"  width="300" height="400">您的的浏览器太尼玛旧了,请更换或升级浏览器!</canvas>
</div>

js代码:

 var canvas&#ElementById("canvas");var canvasBox&#ElementsByClassName("canvas-box")[0];var finger;//触摸屏幕手指var whiteZone=0;//刮掉的区域var pen&#Context("2d");var textArr=['谢谢惠顾!','谢谢惠顾!','谢谢惠顾!','谢谢惠顾!','谢谢惠顾!',"恭喜中奖!","恭喜中奖!","恭喜中奖!","恭喜中奖!","恭喜中奖!"];var W=canvas.offsetWidth;var H=canvas.offsetHeight;var dataList;canvasBox.ateTextNode(textArr[Math.floor(Math.random()*10)]));// 这里一定要闭合路径,防止相互影响pen.beginPath();pen.fillStyle="#ccc";pen.fillRect(0,0,500,500);pen.closePath();//规定元素相互重叠时如何表现   当前为重叠部分透明pen.globalCompositeOperation="destination-out";// 给canvas添加事件,手指移动时获得手指位置,以此位置不断画圆canvas.addEventListener("touchmove",function(e){//e.touches为手指列表,[0]为第一个finger= e.touches[0];pen.beginPath();pen.arc(finger.pageX,finger.pageY,15,0,Math.PI*2);pen.fill();pen.closePath();})//手指放开的时候去计算挂掉的区域占总区域的百分比。大于70%提示ok//getImageData方法获取像素点。其中前两个参数分别为获取像素区域的左上角X Y坐标。后两个参数为像素区域的高和宽。//遍历每个像素点,值为0则是刮掉的像素点canvas.addEventListener("touchend",function(){dataList= ImageData(0,0,300,400);for(var i=0;i<dataList.data.length;i++){if(dataList.data[i]==0){whiteZone++;}}if(whiteZone>=dataList.data.length*0.7){alert("ok!!")}},false)
这里有个小bug就是可以通过查看元素就能看到最终结果。当然这只是提供一个思路了。所以有什么更好的方法大家可以告诉我。

本文发布于:2024-02-02 18:12:46,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170686938645547.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:canvas   刮刮奖
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23