js HTML5手机刮刮乐代码


Posted in Javascript onSeptember 29, 2020

手机刮刮乐HTML5代码, 使用原型prototype扩展了一个clearArc 清除圆内像素的功能, 此功能未完成扇形清除功能, 此外,在清除圆内的像素时,还有点瑕疵,右边和下边还不够圆滑,有明显的齿状。如果你找到修复方法请一定要告诉我哟。不过此清除方法用于刮刮乐已经完全满足需求了。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>刮刮乐</title>
<script type="text/javascript">
 window.onload = function() {
 init();
 }
 CanvasRenderingContext2D.prototype.clearArc=function(x,y,radius,startAngle, endAngle, counterclockwise){
 var distance = function(x0,y0,x1,y1){
 var dis = Math.sqrt(Math.pow(x0-x1,2)+Math.pow(y0-y1,2));
 //return Math.ceil(dis*10000)/10000;
 return Math.round(dis*10000)/10000;
 };
 //首先获得矩形
 var diameter = radius*2;
 var startX = x-radius;
 var cx = radius-(0-startX);
 startX = startX<0?0:startX;
 cx = cx-startX;
 var startY = y-radius;
 var cy = radius-(0-startY);
 startY = startY<0?0:startY;
 cy = cy-startY;
 var imgData = this.getImageData(startX,startY,diameter,diameter);//需要处理的矩形
 for (var i=0;i<imgData.data.length;i+=4){
 //矩阵内的坐标
 var ii = i/4;
 var ix = Math.floor(ii/imgData.width);
 var iy = ii%imgData.height;
 var dis = distance(ix,iy,cx,cy);
 if(dis<=radius){//此点在圆内
 imgData.data[i+0]=0;
 imgData.data[i+1]=0;
 imgData.data[i+2]=0;
 imgData.data[i+3]=0;
 continue;
 }
 var dr = dis-radius;
 if(dr<Math.SQRT2){
 var n = Math.sqrt(Math.pow(dr, 2)/2)*256;//新
 var o = imgData.data[i+3];
 imgData.data[i+3]=n<o?n:o;
 continue;
 }
 }
 this.putImageData(imgData,startX,startY);
 };
 function init() {
 var imageWidth = 200;
 var imageHeight = 100;
 var gglc = document.getElementById("gglc");
 var gglc2D = gglc.getContext("2d");
 gglc2D.fillStyle = '#cccccc'; //设置覆盖层的颜色
 gglc2D.fillRect(1, 1, imageWidth, imageHeight); //设置覆盖的区域
 //gglc2D.clearArc(25,25,20);
 gglc.addEventListener("touchmove", function(event) {
 event.preventDefault();
 for(var i in event.targetTouches){
 var touch = event.targetTouches[i];
 gglc2D.clearArc(touch.pageX,touch.pageY,20);
 }
 }, false);
 gglc.addEventListener("touchstart", function(event) {
 event.preventDefault();
 for(var i in event.targetTouches){
 var touch = event.targetTouches[i];
 gglc2D.clearArc(touch.pageX,touch.pageY,20);
 }
 }, false);
 }
</script>
</head>
<body>
 <div style="position: relative; width: 100%;height: 100%;">
 <div style="position: absolute; width: 200px; height: 100px; text-align: center;line-height: 100px;border: 1px solid #ccc;'">谢谢惠顾</div>
 <canvas style="position: absolute;" id="gglc" width="201" height="101"></canvas>
 </div>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery tools之tabs 选项卡/页签
Jul 25 Javascript
7个Javascript地图脚本整理
Oct 20 Javascript
JQuery打造省市下拉框联动效果
May 18 Javascript
与Math.pow 相反的函数使用介绍
Aug 04 Javascript
EasyUI Pagination 分页的两种做法小结
Jul 09 Javascript
jQuery如何封装输入框插件
Aug 19 Javascript
jQuery实现右侧抽屉式在线客服功能
Dec 25 jQuery
解决angularjs WdatePicker ng-model的问题
Sep 13 Javascript
layui 实现table翻页滚动条位置保持不变的例子
Sep 05 Javascript
jquery实现简易验证插件封装
Sep 13 jQuery
JS实现手风琴特效
Nov 08 Javascript
jQuery是用来干什么的 jquery其实就是一个js框架
Feb 04 jQuery
原生js的RSA和AES加密解密算法
Oct 08 #Javascript
ReactNative-JS 调用原生方法实例代码
Oct 08 #Javascript
微信小程序 实战小程序实例
Oct 08 #Javascript
node.js实现博客小爬虫的实例代码
Oct 08 #Javascript
阿里云ecs服务器中安装部署node.js的步骤
Oct 08 #Javascript
JavaScript“尽快失败”的原则实例详解
Oct 08 #Javascript
jQuery如何解决IE输入框不能输入的问题
Oct 08 #Javascript
You might like
php实现邮件发送并带有附件
2014/01/24 PHP
php环境套包 dedeampz 伪静态设置示例
2014/03/26 PHP
PHP简单获取视频预览图的方法
2015/03/12 PHP
Thinkphp整合阿里云OSS图片上传实例代码
2019/04/28 PHP
PHP基于session.upload_progress 实现文件上传进度显示功能详解
2019/08/09 PHP
PHP Redis扩展无法加载的问题解决方法
2019/08/22 PHP
jquery异步循环获取功能实现代码
2010/09/19 Javascript
Jjcarousellite 实现图片列表滚动的简单实例
2013/11/29 Javascript
JS创建自定义表格具体实现
2014/02/11 Javascript
js用拖动滑块来控制图片大小的方法
2015/02/27 Javascript
ES6新特征数字、数组、字符串
2016/10/01 Javascript
详解vue事件对象、冒泡、阻止默认行为
2017/03/20 Javascript
JS点击缩略图整屏居中放大图片效果
2017/07/04 Javascript
WdatePicker.js时间日期插件的使用方法
2017/07/26 Javascript
[46:48]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第三局
2016/02/25 DOTA
用Python的Tornado框架结合memcached页面改善博客性能
2015/04/24 Python
详解Python3网络爬虫(二):利用urllib.urlopen向有道翻译发送数据获得翻译结果
2019/05/07 Python
Python通过2种方法输出带颜色字体
2020/03/02 Python
Python 分布式缓存之Reids数据类型操作详解
2020/06/24 Python
基于Python 的语音重采样函数解析
2020/07/06 Python
Python读取xlsx数据生成图标代码实例
2020/08/12 Python
如何用Python编写一个电子考勤系统
2021/02/08 Python
HTML5是否真的可以取代Flash
2010/02/10 HTML / CSS
浅谈html5之sse服务器发送事件EventSource介绍
2017/08/28 HTML / CSS
英国版MAC彩妆品牌:Illamasqua
2018/04/18 全球购物
Lacoste(法国鳄鱼)加拿大官网:以标志性的POLO衫而闻名
2019/05/15 全球购物
医学院四年学习生活的自我评价
2013/11/06 职场文书
营业员演讲稿
2013/12/30 职场文书
房地产广告词大全
2014/03/19 职场文书
大学中国梦演讲稿
2014/04/23 职场文书
最新优秀教师个人先进事迹材料
2014/05/06 职场文书
社区安置帮教工作总结2015
2015/05/20 职场文书
golang如何去除多余空白字符(含制表符)
2021/04/25 Golang
Python基础之数据类型知识汇总
2021/05/18 Python
Python激活Anaconda环境变量的详细步骤
2021/06/08 Python
MySQL数据库完全卸载的方法
2022/03/03 MySQL