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 Event学习补遗 addEventSimple
Feb 11 Javascript
理解JavaScript的prototype属性
Feb 11 Javascript
js 判断上传文件大小及格式代码
Nov 13 Javascript
JavaScript自定义等待wait函数实例分析
Mar 23 Javascript
jquery插件hiAlert实现网页对话框美化
May 03 Javascript
浅谈angularJS 作用域
Jul 05 Javascript
纯javascript响应式树形菜单效果
Nov 10 Javascript
浅析javascript的return语句
Dec 15 Javascript
AngularJS基础 ng-switch 指令简单示例
Aug 03 Javascript
点击按钮弹出模态框的一系列操作代码实例
Mar 29 Javascript
解决vue 使用setTimeout,离开当前路由setTimeout未销毁的问题
Jul 21 Javascript
vue中的可拖拽宽度div的实现示例
Apr 08 Vue.js
原生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 随机数的产生、页面跳转、件读写、文件重命名、switch语句
2009/08/07 PHP
PHP制作万年历
2015/01/07 PHP
PHP6新特性分析
2016/03/03 PHP
php基于curl实现的股票信息查询类实例
2016/11/11 PHP
thinkphp5.1 文件引入路径问题及注意事项
2018/06/13 PHP
php反射学习之依赖注入示例
2019/06/14 PHP
JavaScript中判断原生函数检查function是否是原生代码
2014/09/09 Javascript
JavaScript使用slice函数获取数组部分元素的方法
2015/04/06 Javascript
javascript实现全局匹配并替换的方法
2015/04/27 Javascript
jQuery的position()方法详解
2015/07/19 Javascript
轻松掌握JavaScript中的Math object数学对象
2016/05/26 Javascript
JavaScript中undefined和null的区别
2017/05/03 Javascript
详解Vue中一种简易路由传参办法
2017/09/15 Javascript
vue项目中公用footer组件底部位置的适配问题
2018/05/10 Javascript
js+html5 canvas实现ps钢笔抠图
2019/04/28 Javascript
如何用vue-cli3脚手架搭建一个基于ts的基础脚手架的方法
2019/12/12 Javascript
Python类的用法实例浅析
2015/05/27 Python
使用Python实现windows下的抓包与解析
2018/01/15 Python
python opencv旋转图像(保持图像不被裁减)
2018/07/26 Python
Pytorch加载部分预训练模型的参数实例
2019/08/18 Python
Flask框架请求钩子与request请求对象用法实例分析
2019/11/07 Python
python 使用csv模块读写csv格式文件的示例
2020/12/02 Python
django中cookiecutter的使用教程
2020/12/03 Python
Python3+PyCharm+Django+Django REST framework配置与简单开发教程
2021/02/16 Python
HTML5中如何显示视频呢 HTML5视频播放demo
2013/06/08 HTML / CSS
美国温暖商店:The Warming Store
2018/12/15 全球购物
Cynthia Rowley官网:全球领先的生活方式品牌
2020/10/27 全球购物
餐厅执行经理岗位职责范本
2014/02/26 职场文书
村容村貌整治方案
2014/05/21 职场文书
物理分数没达标检讨书
2014/09/13 职场文书
项目合作协议书
2014/09/23 职场文书
庆祝新中国成立65周年“向国旗敬礼”网上签名寄语
2014/09/27 职场文书
2014年学生会个人工作总结
2014/11/07 职场文书
2014年保密工作总结
2014/11/22 职场文书
三方合作意向书范本
2015/05/09 职场文书
新学期小学班主任工作计划
2019/06/21 职场文书