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 脚本的加载与执行
Apr 19 Javascript
判断浏览器的javascript版本的代码
Sep 03 Javascript
在js文件中写el表达式取不到值的原因及解决方法
Dec 23 Javascript
js实现简单秒表走动的时钟特效
Mar 25 Javascript
JavaScript 封装一个tab效果源码分享
Sep 15 Javascript
jquery对象和DOM对象的任意相互转换
Feb 21 Javascript
Google 地图控件集详解及实例代码
Aug 06 Javascript
js记录点击某个按钮的次数-刷新次数为初始状态的实例
Feb 15 Javascript
vue系列之动态路由详解【原创】
Sep 10 Javascript
JavaScript适配器模式详解
Oct 19 Javascript
解决layui表格的表头不滚动的问题
Sep 04 Javascript
解决Vue项目打包后打开index.html页面显示空白以及图片路径错误的问题
Oct 25 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
DIY实用性框形天线
2021/03/02 无线电
深入了解PHP中的Array数组和foreach
2016/11/06 PHP
浅析php-fpm静态和动态执行方式的比较
2016/11/09 PHP
Yii框架组件的事件机制原理与用法分析
2020/04/07 PHP
javascript Discuz代码中的msn聊天小功能
2008/05/25 Javascript
详细讲解JS节点知识
2010/01/31 Javascript
JavaScript 构造函数 面相对象学习必备知识
2010/06/09 Javascript
JQuery中的$.getJSON 使用说明
2011/03/10 Javascript
JQuery扩展插件Validate 3通过参数设置错误信息
2011/09/05 Javascript
js模仿windows桌面图标排列算法具体实现(附图)
2013/06/16 Javascript
基于jquery扩展漂亮的CheckBox(自己编写)
2013/11/19 Javascript
微信小程序 WebSocket详解及应用
2017/01/21 Javascript
jQuery Ajax前后端使用JSON进行交互示例
2017/03/17 Javascript
vue组件如何被其他项目引用
2017/04/13 Javascript
JavaScript数组,JSON对象实现动态添加、修改、删除功能示例
2018/05/26 Javascript
基于Vue 2.0 监听文本框内容变化及ref的使用说明介绍
2018/08/24 Javascript
js实现随机数小游戏
2019/06/28 Javascript
vue 使用localstorage实现面包屑的操作
2020/11/16 Javascript
node.js通过Sequelize 连接MySQL的方法
2020/12/28 Javascript
Python对象属性自动更新操作示例
2018/06/15 Python
关于python写入文件自动换行的问题
2018/06/23 Python
Win10下Python3.7.3安装教程图解
2019/07/08 Python
django框架模板语言使用方法详解
2019/07/18 Python
pygame库实现俄罗斯方块小游戏
2019/10/29 Python
Python基于xlutils修改表格内容过程解析
2020/07/28 Python
matplotlib grid()设置网格线外观的实现
2021/02/22 Python
中国领先的专业演出票务网:永乐票务
2016/08/29 全球购物
Ray-Ban雷朋太阳眼镜英国官网:Ray-Ban UK
2019/11/23 全球购物
意大利辅助药品、药物和补品在线销售:FarmaEurope
2020/04/29 全球购物
房屋改造计划书
2014/01/10 职场文书
授权委托书范文
2014/07/31 职场文书
涉及车辆房产分割的离婚协议书范文
2014/10/12 职场文书
车间安全生产管理制度
2015/08/06 职场文书
幼儿园大班教育随笔
2015/08/14 职场文书
Python中glob库实现文件名的匹配
2021/06/18 Python
用Python实现屏幕截图详解
2022/01/22 Python