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深入理解js闭包
Jul 03 Javascript
基于jQuery实现的百度导航li拖放排列效果,即时更新数据库
Jul 31 Javascript
重写javascript中window.confirm的行为
Oct 21 Javascript
js 3种归并操作的实例代码
Oct 30 Javascript
通过BootStrap-select插件 js jQuery控制select属性变化
Jan 03 Javascript
angularjs+bootstrap菜单的使用示例代码
Mar 07 Javascript
Vuex之理解Getters的用法实例
Apr 19 Javascript
基于vue.js路由参数的实例讲解——简单易懂
Sep 07 Javascript
JS+WCF实现进度条实时监测数据加载量的方法详解
Dec 19 Javascript
JS计算两个时间相差分钟数的方法示例
Jan 10 Javascript
微信小程序支付PHP代码
Aug 23 Javascript
JS数组的高级使用方法示例小结
Mar 14 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
Views rows style模板重写代码
2011/05/16 PHP
Admin generator, filters and I18n
2011/10/06 PHP
php采用file_get_contents代替使用curl实例
2014/11/07 PHP
php中静态类与静态变量用法的区别分析
2015/01/15 PHP
PHP树的深度编历生成迷宫及A*自动寻路算法实例分析
2015/03/10 PHP
PHP输出一个等腰三角形的方法
2015/05/12 PHP
php封装的pdo数据库操作工具类与用法示例
2019/05/08 PHP
让whoops帮我们告别ThinkPHP6的异常页面
2020/03/02 PHP
jQuery 入门讲解1
2009/04/15 Javascript
jquery弹出层类代码分享
2013/12/27 Javascript
理解javascript中的with关键字
2016/02/15 Javascript
Angular.js如何从PHP读取后台数据
2016/03/24 Javascript
jQuery通过deferred对象管理ajax异步
2016/05/20 Javascript
jQuery仿京东商城楼梯式导航定位菜单
2016/07/25 Javascript
AngularJS实现页面跳转后自动弹出对话框实例代码
2017/08/02 Javascript
Vuex实现计数器以及列表展示效果
2018/03/10 Javascript
深入浅析Vue中的Prop
2018/06/10 Javascript
vue添加axios,并且指定baseurl的方法
2018/09/19 Javascript
Python中for循环和while循环的基本使用方法
2015/08/21 Python
python多进程共享变量
2016/04/06 Python
Python实现字符串格式化的方法小结
2017/02/20 Python
用Python实现最速下降法求极值的方法
2019/07/10 Python
Django框架反向解析操作详解
2019/11/28 Python
python 浅谈serial与stm32通信的编码问题
2019/12/18 Python
torch 中各种图像格式转换的实现方法
2019/12/26 Python
Python如何读写二进制数组数据
2020/08/01 Python
Anaconda详细安装步骤图文教程
2020/11/12 Python
使用CSS3实现input多选框自定义样式的方法示例
2019/07/19 HTML / CSS
西班牙创意礼品和小工具网上商店:Curiosite
2016/07/26 全球购物
Clearly新西兰:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
医生实习工作总结的自我评价
2013/09/27 职场文书
幼师专业毕业生自荐信
2013/09/29 职场文书
大专应届毕业生求职信
2014/07/15 职场文书
详解MySQL 用户权限管理
2021/04/20 MySQL
Python 恐龙跑跑小游戏实现流程
2022/02/15 Python
MySQL远程无法连接的一些常见原因总结
2022/09/23 MySQL