canvas绘制的直线动画


Posted in Javascript onJanuary 23, 2017

话不多说,请看代码:

<!DOCTYPE html>
<html>
 <head>
 <meta charset="UTF-8">
 <title>first line</title>
 <style type="text/css">
       body{
         background: #456E89;
       }
 .canvas {
 height: 300px;
 width: 300px; 
 margin: 0 auto;
 font-family: arial;
 }
 </style>
 </head>
 <body>
 <div class="canvas">
 <canvas id="cvs" width="300" height="300"></canvas>
 </div>
 <script type="text/javascript">
 var cvs = document.getElementById("cvs").getContext("2d");
 function Anim(opt) { //初始化值
 this.opt = opt;
 }
 //node 表示画布节点
 //staX 表示开始x坐标
 //staY 表示开始y坐标
 //len表示终点坐标,
 //timing表示运行的间隔时间, 
 //num表示坐标增长的大小 
 //direc表示判断绘制线条的方向,false表示X轴,ture表示Y轴
 //lw表示线宽的大小 
 //color 表示绘制线条颜色
 Anim.prototype.draw = function() { //绘制直线的线条
 var opt = this.opt; //设置对象的属性
 var adx = opt.staX;
 var ady = opt.staY;
 var that = {
  x: opt.staX,
  y: opt.staY
 };
 var Time = setInterval(function() {
  opt.direc //判断绘制方向
  ?
  opt.len > ady ? ady += opt.num : ady -= opt.num :
  opt.len > adx ? adx += opt.num : adx -= opt.num;
  if(adx == opt.len || ady == opt.len) { //停止循环
  clearInterval(Time);
  }
  opt.Node.beginPath(); // 开始绘制线条
  opt.Node.moveTo(that.x, that.y);
  opt.Node.lineTo(adx, ady);
  opt.Node.lineWidth = opt.lw || 1;
  opt.Node.strokeStyle = opt.color;
  opt.Node.stroke();
 }, opt.timing);
 };
 Anim.prototype.txt = function(opc) {//绘制文字 
 cvs.beginPath();
 cvs.fillStyle = "rgba(255,255,255,"+opc+")";
 cvs.font = "200px arial";
 cvs.fillText("L", 100, 200);
 };
 var line1 = new Anim({ //实例
 Node: cvs,
 color: "#fff",
 staX: 114,
 staY: 58,
 len: 134,
 timing: 50,
 num: 1,
 direc: false,
 lw: 2
 });
 line1.draw(); //执行绘制
 var line2 = new Anim({
 Node: cvs,
 color: "#fff",
 staX: 115,
 staY: 58,
 len: 200,
 timing: 20,
 num: 1,
 direc: true,
 lw: 2
 });
 line2.draw();
 var line3 = new Anim({
 Node: cvs,
 color: "#fff",
 staX: 133,
 staY: 184,
 len: 58,
 timing: 20,
 num: 1,
 direc: true,
 lw: 2
 });
 line3.draw();
 var line4 = new Anim({
 Node: cvs,
 color: "#fff",
 staX: 132,
 staY: 184,
 len: 203,
 timing: 35,
 num: 1,
 direc: false,
 lw: 2
 });
 line4.draw();
 var line5 = new Anim({
 Node: cvs,
 color: "#fff",
 staX: 203,
 staY: 199,
 len: 115,
 timing: 35,
 num: 1,
 direc: false,
 lw: 2
 });
 line5.draw();
 var line6 = new Anim({
 Node: cvs,
 color: "#fff",
 staX: 203,
 staY: 199,
 len: 184,
 timing: 50,
 num: 1,
 direc: true,
 lw: 2
 });
 line6.draw();
 var test = new Anim();//绘制文字实例
 setTimeout(function () {
 var num = 0;
 var times = setInterval(function () {
  num++;
  var t = num/100;
  if(t === 1){
  clearInterval(times);
  }
  test.txt(t);
 },50)
 },3000)
 </script>
 </body>
</html>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
共享自己写一个框架DreamScript
Jan 20 Javascript
setTimeout()递归调用不加引号出错的解决方法
Sep 05 Javascript
angularjs的一些优化小技巧
Dec 06 Javascript
Jquery遍历select option和添加移除option的实现方法
Aug 26 Javascript
javascript的函数劫持浅析
Sep 26 Javascript
JS+HTML实现的圆形可点击区域示例【3种方法】
Aug 01 Javascript
关于RxJS Subject的学习笔记
Dec 05 Javascript
Vuex新手的理解与使用详解
May 31 Javascript
微信小程序嵌入腾讯视频源过程详解
Aug 08 Javascript
vue实现将一个数组内的相同数据进行合并
Nov 07 Javascript
解决vue中el-tab-pane切换的问题
Jul 19 Javascript
深入浅析React中diff算法
May 19 Javascript
node.js实现复制文本到剪切板的功能
Jan 23 #Javascript
jQuery 全选 全不选 事件绑定的实现代码
Jan 23 #Javascript
Javascript中构造函数要注意的一些坑
Jan 23 #Javascript
在 Angular2 中实现自定义校验指令(确认密码)的方法
Jan 23 #Javascript
jQuery.cookie.js实现记录最近浏览过的商品功能示例
Jan 23 #Javascript
利用JS实现简单的日期选择插件
Jan 23 #Javascript
获取IE浏览器Cookie信息的方法
Jan 23 #Javascript
You might like
《雄兵连》系列首部大电影《烈阳天道》:可能是因为期望值太高了
2020/08/18 国漫
php中的时间处理
2006/10/09 PHP
实用PHP会员权限控制实现原理分析
2011/05/29 PHP
解析PHP跳出循环的方法以及continue、break、exit的区别介绍
2013/07/01 PHP
Symfony2实现在controller中获取url的方法
2016/03/18 PHP
Laravel框架下的Contracts契约详解
2020/03/17 PHP
用js实现控制内容的向上向下滚动效果
2007/06/26 Javascript
jQuery 局部div刷新和全局刷新方法总结
2016/10/05 Javascript
vue之nextTick全面解析
2017/05/17 Javascript
Swiper自定义分页器使用详解
2017/12/28 Javascript
JavaScript中click和onclick本质区别与用法分析
2018/06/07 Javascript
浅谈vue在html中出现{{}}的原因及解决方式
2020/11/16 Javascript
python解决方案:WindowsError: [Error 2]
2016/08/28 Python
python实现电脑自动关机
2018/06/20 Python
python中的插值 scipy-interp的实现代码
2018/07/23 Python
Django框架组成结构、基本概念与文件功能分析
2019/07/30 Python
python常见字符串处理函数与用法汇总
2019/10/30 Python
Python操作Sonqube API获取检测结果并打印过程解析
2019/11/27 Python
详解HTML5新增标签
2017/11/27 HTML / CSS
英国高街品牌:Miss Selfridge(塞尔弗里奇小姐)
2016/09/21 全球购物
会计主管岗位职责
2014/01/03 职场文书
优秀幼教自荐信
2014/02/03 职场文书
会计与出纳自荐书范文
2014/03/16 职场文书
应聘教师自荐书
2014/06/16 职场文书
旅游专业毕业生自荐书
2014/06/30 职场文书
规范化管理年活动总结
2014/08/29 职场文书
党性教育心得体会
2014/09/03 职场文书
卫生厅领导班子党的群众路线教育实践活动整改措施
2014/09/20 职场文书
工作收入住址证明
2014/10/28 职场文书
初中生考试作弊检讨书
2014/12/14 职场文书
工程技术员岗位职责
2015/04/11 职场文书
2015年财政所工作总结
2015/04/25 职场文书
工作态度不好检讨书
2015/05/06 职场文书
考试没考好检讨书
2015/05/06 职场文书
房贷收入证明范本
2015/06/12 职场文书
CSS中calc(100%-100px)不加空格不生效
2023/05/07 HTML / CSS