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 相关文章推荐
javascript获取select的当前值示例代码(兼容IE/Firefox/Opera/Chrome)
Dec 17 Javascript
JavaScript学习笔记整理_简单实现枚举类型,扑克牌应用
Sep 19 Javascript
js判断一个字符串是以某个字符串开头的简单实例
Dec 27 Javascript
jQuery+ajax的资源回收处理机制分析
Jan 07 Javascript
ES6生成器用法实例分析
Apr 10 Javascript
JavaScript累加、迭代、穷举、递归等常用算法实例小结
May 08 Javascript
微信小程序表单验证form提交错误提示效果
Jun 19 Javascript
js实现延迟加载的几种方法详解
Jan 19 Javascript
JavaScript中构造函数与原型链之间的关系详解
Feb 25 Javascript
什么时候不能在 Node.js 中使用 Lock Files
Jun 24 Javascript
layui复选框限制选择个数的方法
Sep 18 Javascript
vue+animation实现翻页动画
Jun 29 Javascript
原生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 smarty函数扩展
2010/03/15 PHP
PHP实现linux命令tail -f
2016/02/22 PHP
PHP构造函数与析构函数用法示例
2016/09/28 PHP
jquery1.4 教程二 ajax方法的改进
2010/02/25 Javascript
Knockout text绑定DOM的使用方法
2013/11/15 Javascript
javascript判断office版本示例
2014/04/11 Javascript
JavaScript 浏览器对象模型BOM使用介绍
2015/04/13 Javascript
jquery插件autocomplete用法示例
2016/07/01 Javascript
BootStrap学习系列之Bootstrap Typeahead 组件实现百度下拉效果(续)
2016/07/07 Javascript
js时间比较 js计算时间差的简单实现方法
2016/08/26 Javascript
Angular实现跨域(搜索框的下拉列表)
2017/02/16 Javascript
TypeScript基础入门教程之三重斜线指令详解
2018/10/22 Javascript
微信小程序车牌号码模拟键盘输入功能的实现代码
2018/11/11 Javascript
如何写好一个vue组件,老夫的一年经验全在这了(推荐)
2019/05/18 Javascript
es6中new.target的作用和使用场景简单示例分析
2020/03/14 Javascript
js+audio实现音乐播放器
2020/09/13 Javascript
python 正则式 概述及常用字符
2009/05/07 Python
Python高效编程技巧
2013/01/07 Python
Python实现股市信息下载的方法
2015/06/15 Python
wxPython使用系统剪切板的方法
2015/06/16 Python
浅析使用Python操作文件
2017/07/31 Python
python+selenium开发环境搭建图文教程
2017/08/11 Python
对python使用http、https代理的实例讲解
2018/05/07 Python
python os.path模块常用方法实例详解
2018/09/16 Python
django xadmin 管理器常用显示设置方式
2020/03/11 Python
分布式全文检索引擎ElasticSearch原理及使用实例
2020/11/14 Python
Django中ORM的基本使用教程
2020/12/22 Python
HTML5的一个显示电池状态的API简介
2015/06/18 HTML / CSS
SQL里面如何插入自动增长序列号字段
2012/03/29 面试题
个人自我鉴定
2013/11/07 职场文书
项目建议书模板
2014/05/12 职场文书
社会稳定风险评估方案
2014/06/02 职场文书
投标文件签署授权委托书范本
2014/10/12 职场文书
2017新年晚会开幕词
2016/03/03 职场文书
SONY AN-LP1 短波有源天线放大器
2021/04/22 无线电
JavaScript实现队列结构过程
2021/12/06 Javascript