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 相关文章推荐
点击弹出层效果&amp;弹出窗口后网页背景变暗效果的实现代码
Feb 10 Javascript
Jquery动态添加输入框的方法
May 29 Javascript
基于bootstrap3和jquery的分页插件
Jul 31 Javascript
在AngularJS中使用jQuery的zTree插件的方法
Apr 21 Javascript
Javascript格式化并高亮xml字符串的方法及注意事项
Aug 13 Javascript
jQuery中$原理实例分析
Aug 13 jQuery
深入理解Vue 的钩子函数
Sep 05 Javascript
微信小程序使用websocket通讯的demo,含前后端代码,亲测可用
May 22 Javascript
vue组件内部引入外部js文件的方法
Jan 18 Javascript
JQuery复选框全选效果如何实现
May 08 jQuery
javascript实现打砖块小游戏(附完整源码)
Sep 18 Javascript
如何利用js在两个html窗口间通信
Apr 27 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
支持oicq头像的留言簿(一)
2006/10/09 PHP
关于PHP中Object对象的笔记分享
2011/06/28 PHP
php生成年月日下载列表的方法
2015/04/24 PHP
详解PHP对数组的定义以及数组的创建方法
2015/11/27 PHP
Javascript代码混淆综合解决方案-Javascript在线混淆器
2006/12/18 Javascript
js 创建书签小工具之理论
2011/02/25 Javascript
基于jQuery的可用于选项卡及幻灯的切换插件
2011/03/28 Javascript
JS 添加千分位与去掉千分位的示例
2013/07/11 Javascript
javascript解析json数据的3种方式
2014/05/08 Javascript
前端弹出对话框 js实现ajax交互
2016/09/09 Javascript
js中DOM三级列表(代码分享)
2017/03/20 Javascript
微信小程序实现表单校验功能
2020/03/30 Javascript
vue引入ueditor及node后台配置详解
2018/01/03 Javascript
jquery.picsign图片标注组件实例详解
2018/02/02 jQuery
JS/HTML5游戏常用算法之路径搜索算法 随机迷宫算法详解【普里姆算法】
2018/12/13 Javascript
Vue动态修改网页标题的方法及遇到问题
2019/06/09 Javascript
js实现页面多个日期时间倒计时效果
2019/06/20 Javascript
vue实现二级导航栏效果
2019/10/19 Javascript
nodejs对mongodb数据库的增加修删该查实例代码
2020/01/05 NodeJs
CentOS中升级Python版本的方法详解
2017/07/10 Python
Python实现pdf文档转txt的方法示例
2018/01/19 Python
Python中的Django基本命令实例详解
2018/07/15 Python
python实现文件助手中查看微信撤回消息
2019/04/29 Python
Python生成器generator原理及用法解析
2020/07/20 Python
使用CSS3的ruby-position固定注音位置的用法示例
2016/07/05 HTML / CSS
HTML5 表单验证失败的提示语问题
2017/07/13 HTML / CSS
乌克兰排名第一的在线旅游超市:Farvater.Travel
2020/01/02 全球购物
Web Service面试题:如何搭建Axis2的开发环境
2012/06/20 面试题
网络、C以及其他硬件方面的面试题
2016/08/23 面试题
黄继光的英雄事迹材料
2014/02/13 职场文书
项目合作意向书范本
2014/04/01 职场文书
庆祝三八妇女节标语
2014/10/09 职场文书
2015年施工员工作总结范文
2015/04/20 职场文书
芙蓉镇观后感
2015/06/10 职场文书
2016毕业实习单位评语大全
2015/12/01 职场文书
Vue + iView实现Excel上传功能的完整代码
2021/06/22 Vue.js