首页 / CANVAS / Canvas制作动态进度加载水球
Canvas制作动态进度加载水球
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Canvas制作动态进度加载水球,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3109字,纯文字阅读大概需要5分钟。
内容图文
![Canvas制作动态进度加载水球](/upload/InfoBanner/zyjiaocheng/1150/a9b5c6b15eba43299c4981ed82be73dc.jpg)
1 <! DOCTYPE html > 2 < html lang ="en" > 3 < head > 4 < meta charset ="UTF-8" > 5 < title >Canvas制作动态进度加载水球</title> 6<style type="text/css"> 7 #c{ 8 margin: 0 auto; 9 display: block; 10} 11 #r{ 12 display: block; 13 margin: 0 auto; 14} 15 #r::before{ 16 color: black; 17 content: attr(min); 18 padding-right: 10px; 19} 20 #r::after{ 21 color: black; 22 content: attr(max); 23 padding-left: 10px; 24} 25</style> 26<script type="text/javascript"> 27 window.onload=function() { 28 29var canvas = document.getElementById(‘c‘); 30var ctx = canvas.getContext(‘2d‘); 31var range = document.getElementById(‘r‘); 32 33//range控件信息 34var rangeValue = range.value;// 默认5 35var nowRange =0; //用于做一个临时的range 36 37//画布属性 38var mW = canvas.width =250; 39var mH = canvas.height =250; 40var lineWidth =2; 41 42//圆属性 43var r = mH /2; //圆心 44var cR = r -16* lineWidth; //圆半径 45 46//Sin 曲线属性 47var sX =0; 48var sY = mH /2; 49var axisLength = mW; //轴长 50var waveWidth =0.03 ; // 绝对值 波浪宽度,数越小越宽 51var waveHeight =6; //波浪高度,数越大越高 52var speed =0.10; //波浪速度,数越大速度越快 改变sin 的值 53var xOffset =0; //波浪x偏移量 54 55 ctx.lineWidth = lineWidth; 56 57//画圈函数 58var IsdrawCircled =false; 59var drawCircle =function(){ 60 61 ctx.beginPath(); 62 ctx.strokeStyle =‘#1080d0‘; 63 ctx.arc(r, r, cR+5, 0, 2* Math.PI); 64 ctx.stroke(); 65 ctx.beginPath(); 66 ctx.arc(r, r, cR, 0, 2* Math.PI); 67 ctx.clip(); 68 69 } 70 71//画sin 曲线函数 72var drawSin =function(xOffset){ 73 74 ctx.save(); 75 76var points=[]; //用于存放绘制Sin曲线的点 77 78 ctx.beginPath(); 79//在整个轴长上取点 80// 250 20/250 ==3125 个点 绘制多个 x.y 点 81for(var x = sX; x < axisLength; x +=20/ axisLength){ 82//此处坐标(x,y)的取点,依靠公式 “振幅高*sin(x*振幅宽 + 振幅偏移量)” 83var y =-Math.sin(x * waveWidth + xOffset); // 返回-1 到 1 的值 84var dY = mH * (1- nowRange /100 ); 85 86 points.push([x, dY + y * waveHeight]); 87 ctx.lineTo(x, dY + y * waveHeight); 88 89 }//--------------绘制波浪 90 91 92//封闭路径 93 94 ctx.lineTo(axisLength, mH); //250 250 ---最右边 95 ctx.lineTo(sX, mH); //0 250 ----最左边 96 97 ctx.fillStyle =‘#1c86d1‘; 98 ctx.fill(); 99100 ctx.restore(); 101 }; 102103//写百分比文本函数104var drawText =function(){ 105 ctx.save(); 106107var size =0.4*cR; 108 ctx.font = size +‘px Microsoft Yahei‘; 109 ctx.textAlign =‘center‘; 110 ctx.fillStyle ="rgba(06, 85, 128, 0.8)"; 111 ctx.fillText(nowRange +‘%‘, r, r + size /2); 112113 ctx.restore(); 114 }; 115116var render =function(){ 117 ctx.clearRect(0, 0, mW, mH); 118119 rangeValue = range.value; 120121if(IsdrawCircled ==false){ 122 drawCircle(); 123 } 124125if(nowRange <= rangeValue){ 126var tmp =1; 127 nowRange += tmp; 128 } 129130if(nowRange > rangeValue){ 131var tmp =1; 132 nowRange -= tmp; 133 } 134135if(rangeValue>0) 136 { 137 drawSin(xOffset); 138 } 139 drawText(); 140141 xOffset += speed; 142143 requestAnimationFrame(render); 144 } 145 render(); 146 } 147</script>148</head>149<body>150151</body>152<canvas id="c"></canvas>153<input type="range" id="r" min="0" max="100" step="1" value="0">154</html>
原文:https://www.cnblogs.com/xuey/p/8571558.html
内容总结
以上是互联网集市为您收集整理的Canvas制作动态进度加载水球全部内容,希望文章能够帮你解决Canvas制作动态进度加载水球所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。