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 Konami Code 实现代码
Jul 29 Javascript
ie8 不支持new Date(2012-11-10)问题的解决方法
Jul 31 Javascript
类似天猫商品详情随浏览器移动的示例代码
Feb 27 Javascript
js、jquery图片动画、动态切换示例代码
Jun 03 Javascript
使用纯javascript实现经典扫雷游戏
Apr 23 Javascript
AngularJS优雅的自定义指令
Jul 01 Javascript
jQuery实现获取table中鼠标click点击位置行号与列号的方法
Oct 09 jQuery
微信小程序实现商城倒计时
Nov 01 Javascript
原生js实现html手机端城市列表索引选择城市
Jun 24 Javascript
Vue循环中多个input绑定指定v-model实例
Aug 31 Javascript
jQuery实现二级导航菜单的示例
Sep 30 jQuery
vue实现简单加法计算器
Oct 22 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环境配置 php5 mysql5 apache2 phpmyadmin安装与配置
2006/11/17 PHP
深入解析PHP 5.3.x 的strtotime() 时区设定 警告信息修复
2013/08/05 PHP
php获取apk包信息的方法
2014/08/15 PHP
php采用ajax数据提交post与post常见方法总结
2014/11/10 PHP
PHP批量去除BOM头内容信息代码
2016/03/11 PHP
jQuery live
2009/05/15 Javascript
JavaScript的单例模式 (singleton in Javascript)
2010/06/11 Javascript
基于NodeJS的前后端分离的思考与实践(一)全栈式开发
2014/09/26 NodeJs
15款jQuery分布引导插件分享
2015/02/04 Javascript
Angular中ng-repeat与ul li的多层嵌套重复问题
2017/07/24 Javascript
浅谈Angular文字折叠展开组件的原理分析
2017/11/24 Javascript
vue实现消息的无缝滚动效果的示例代码
2017/12/05 Javascript
vue和webpack打包项目相对路径修改的方法
2018/06/15 Javascript
详解如何在微信小程序中愉快地使用sass
2018/07/30 Javascript
对vue中v-if的常见使用方法详解
2018/09/28 Javascript
npm scripts 使用指南详解
2018/10/08 Javascript
d3绘制基本的柱形图的实现代码
2018/12/12 Javascript
vue项目中使用vue-i18n报错的解决方法
2019/01/13 Javascript
微信小程序的线程架构【推荐】
2019/05/14 Javascript
前端天气插件tpwidget使用方法详解
2019/06/24 Javascript
[46:49]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.19
2020/12/24 DOTA
Python中设置变量访问权限的方法
2015/04/27 Python
Django 使用Ajax进行前后台交互的示例讲解
2018/05/28 Python
python reverse反转部分数组的实例
2018/12/13 Python
Python面向对象程序设计OOP入门教程【类,实例,继承,重载等】
2019/01/05 Python
Python API自动化框架总结
2019/11/12 Python
Python3连接Mysql8.0遇到的问题及处理步骤
2020/02/17 Python
详解python方法之绑定方法与非绑定方法
2020/08/17 Python
python UDF 实现对csv批量md5加密操作
2021/01/01 Python
英国独特礼物想法和个性化礼物网站:notonthehighstreet.com
2018/04/16 全球购物
英国男女豪华配饰和礼品网站:Black.co.uk
2020/02/28 全球购物
门店业绩提升方案
2014/06/08 职场文书
高等学院职业生涯规划书范文
2014/09/16 职场文书
临时租车协议范本
2014/09/23 职场文书
迟到检讨书
2015/01/26 职场文书
家长意见书
2015/06/04 职场文书