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 相关文章推荐
CutePsWheel javascript libary 控制输入文本框为可使用滚轮控制的js库
Feb 07 Javascript
编写自己的jQuery插件简单实现代码
Apr 19 Javascript
将两个div左右并列显示并实现点击标题切换内容
Oct 22 Javascript
用于deeplink的js方法(判断手机是否安装app)
Apr 02 Javascript
gridview生成时如何去掉style属性中的border-collapse
Sep 30 Javascript
jQuery给多个不同元素添加class样式的方法
Mar 26 Javascript
jquery动态增加删减表格行特效
Nov 20 Javascript
AngularJs中route的使用方法和配置
Feb 04 Javascript
AngularJS 2.0新特性有哪些
Feb 18 Javascript
实例讲解JavaScript中的this指向错误解决方法
Jun 13 Javascript
VUE-Table上绑定Input通过render实现双向绑定数据的示例
Aug 27 Javascript
vue图片上传组件使用详解
Dec 23 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
也谈截取首页新闻 - 范例
2006/10/09 PHP
PHP array_flip() 删除重复数组元素专用函数
2010/05/16 PHP
destoon整合ucenter后注册页面不跳转的解决方法
2014/06/21 PHP
php使用GeoIP库实例
2014/06/27 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
2017/09/20 PHP
PHP多进程简单实例小结
2019/11/09 PHP
js中将多个语句写成一个语句的两种方法小结
2007/12/08 Javascript
js 实现无缝滚动 兼容IE和FF
2009/07/15 Javascript
十分钟打造AutoComplete自动完成效果代码
2009/12/26 Javascript
javascript学习笔记(七)利用javascript来创建和存储cookie
2011/04/08 Javascript
javascript使用window.open提示“已经计划系统关机”的原因
2014/08/15 Javascript
Javascript writable特性介绍
2015/02/27 Javascript
js实现新浪微博首页效果
2015/10/16 Javascript
基于jquery实现日历签到功能
2020/09/11 Javascript
jQuery实现圣诞节礼物传送(花式轮播)
2016/12/25 Javascript
jQuery Ajax实现跨域请求
2017/01/21 Javascript
详解在vue-cli项目中安装node-sass
2017/06/21 Javascript
Vue-Router实现组件间跳转的三种方法
2017/11/07 Javascript
vue同步父子组件和异步父子组件的生命周期顺序问题
2018/10/07 Javascript
webpack4+react多页面架构的实现
2018/10/25 Javascript
Postman内建变量常用方法实例解析
2020/07/28 Javascript
JavaScript实现拖动对话框效果的实现代码
2020/10/12 Javascript
关于IDEA中的.VUE文件报错 Export declarations are not supported by current JavaScript version
2020/10/17 Javascript
[40:03]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#1EHOME VS Archon
2016/03/02 DOTA
关于你不想知道的所有Python3 unicode特性
2014/11/28 Python
基于python脚本实现软件的注册功能(机器码+注册码机制)
2016/10/09 Python
Python内置模块hashlib、hmac与uuid用法分析
2018/02/12 Python
python爬虫实现中英翻译词典
2019/06/25 Python
python自动识别文本编码格式代码
2019/12/26 Python
Python函数的定义方式与函数参数问题实例分析
2019/12/26 Python
Seavenger官网:潜水服、浮潜、靴子和袜子
2020/03/05 全球购物
横幅标语大全
2014/06/17 职场文书
大学奖学金获奖感言
2014/08/15 职场文书
采购内勤岗位职责
2015/04/13 职场文书
深入理解以DEBUG方式线程的底层运行原理
2021/06/21 Java/Android
Win11任务栏无法正常显示 资源管理器不停重启的解决方法
2022/07/07 数码科技