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 Ajax之$.get()方法和$.post()方法
Oct 12 Javascript
js格式化金额可选是否带千分位以及保留精度
Jan 28 Javascript
基于JQuery实现滚动到页面底端时自动加载更多信息
Jan 31 Javascript
JavaScript解析json格式数据简单示例
Dec 09 Javascript
深入探寻seajs的模块化与加载方式
Apr 14 Javascript
js实现3D图片逐张轮播幻灯片特效代码分享
Sep 09 Javascript
CSS3结合jQuery实现动画效果及回调函数的实例
Dec 27 jQuery
vue中简单弹框dialog的实现方法
Feb 26 Javascript
JavaScript 跨域之POST实现方法
May 07 Javascript
vue.js中ref和$refs的使用及示例讲解
Aug 14 Javascript
关于vue3默认把所有onSomething当作v-on事件绑定的思考
May 15 Javascript
微信小程序实现倒计时功能
Nov 19 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
盘点被央视点名过的日本动画电影 一部比一部强
2020/03/08 日漫
PHP图像处理类库及演示分享
2015/05/17 PHP
详解PHP中mb_strpos的使用
2018/02/04 PHP
PHP count_chars()函数讲解
2019/02/14 PHP
php文件后缀不强制为.php的实操方法
2019/09/18 PHP
PHP实现批量修改文件名的方法示例
2019/09/18 PHP
jquery自动完成插件(autocomplete)应用之PHP版
2009/12/15 Javascript
JavaScript中的冒泡排序法
2016/08/03 Javascript
微信小程序 WXDropDownMenu组件详解及实例代码
2016/10/24 Javascript
详解Angular6.0使用路由步骤(共7步)
2018/06/29 Javascript
基于vue实现web端超大数据量表格的卡顿解决
2019/04/02 Javascript
[39:18]完美世界DOTA2联赛PWL S3 Forest vs LBZS 第二场 12.17
2020/12/19 DOTA
python读写ini文件示例(python读写文件)
2014/03/25 Python
Python配置文件解析模块ConfigParser使用实例
2015/04/13 Python
python脚本设置系统时间的两种方法
2016/02/21 Python
读取本地json文件,解析json(实例讲解)
2017/12/06 Python
python中requests和https使用简单示例
2018/01/18 Python
详解Pycharm出现out of memory的终极解决方法
2020/03/03 Python
用Python制作mini翻译器的实现示例
2020/08/17 Python
python3实现简单飞机大战
2020/11/29 Python
python安装mysql的依赖包mysql-python操作
2021/01/01 Python
pycharm 快速解决python代码冲突的问题
2021/01/15 Python
简历上的自我评价
2014/02/03 职场文书
活动策划邀请函
2014/02/06 职场文书
临床护理求职信
2014/04/26 职场文书
最新优秀教师个人先进事迹材料
2014/05/06 职场文书
平安建设工作方案
2014/06/02 职场文书
教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
2014年科室工作总结范文
2014/12/19 职场文书
社会治安综合治理责任书
2015/01/29 职场文书
国庆庆典邀请函
2015/02/02 职场文书
个人优缺点总结
2015/02/28 职场文书
法院个人总结
2015/03/03 职场文书
返乡农民工证明
2015/06/24 职场文书
Python使用sql语句对mysql数据库多条件模糊查询的思路详解
2021/04/12 Python
Navicat连接MySQL错误描述分析
2021/06/02 MySQL