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 相关文章推荐
使用jQuery+HttpHandler+xml模拟一个三级联动的例子
Aug 09 Javascript
JS判断客户端是手机还是PC的2个代码
Apr 12 Javascript
JavaScript原生对象之Number对象的属性和方法详解
Mar 13 Javascript
相册展示PhotoSwipe.js插件实现
Aug 25 Javascript
原生js实现鼠标跟随效果
Feb 28 Javascript
详解vue.js 开发环境搭建最简单攻略
Jun 12 Javascript
基于vue配置axios的方法步骤
Nov 09 Javascript
详解在vue-test-utils中mock全局对象
Nov 07 Javascript
JS判断数组里是否有重复元素的方法小结
May 21 Javascript
超简单的微信小程序轮播图
Nov 22 Javascript
vue项目中使用eslint+prettier规范与检查代码的方法
Jan 16 Javascript
微信小程序实现点赞业务
Feb 10 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
谈谈PHP的输入输出流
2007/02/14 PHP
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
2012/06/17 PHP
php笔记之:有规律大文件的读取与写入的分析
2013/04/26 PHP
PHP图片处理之图片旋转和图片翻转实例
2014/11/19 PHP
php遍历删除整个目录及文件的方法
2015/03/13 PHP
Zend Framework教程之请求对象的封装Zend_Controller_Request实例详解
2016/03/07 PHP
TP5框架请求响应参数实例分析
2019/10/17 PHP
PHP7原生MySQL数据库操作实现代码
2020/07/03 PHP
cloudgamer出品ImageZoom 图片放大效果
2010/04/01 Javascript
javascript中parentNode,childNodes,children的应用详解
2013/12/17 Javascript
使用js实现数据格式化
2014/12/03 Javascript
node爬取微博的数据的简单封装库nodeweibo使用指南
2015/01/02 Javascript
jQuery常用数据处理方法小结
2015/02/20 Javascript
JavaScript获取页面中表单(form)数量的方法
2015/04/03 Javascript
JavaScript隐式类型转换
2016/03/15 Javascript
jquery easyui datagrid实现增加,修改,删除方法总结
2016/05/25 Javascript
jQuery Position方法使用和兼容性
2017/08/23 jQuery
微信小程序实现跟随菜单效果和循环嵌套加载数据
2017/11/21 Javascript
vue页面加载闪烁问题的解决方法
2018/03/28 Javascript
在JavaScript中实现链式调用的实现
2019/12/24 Javascript
Javascript中的奇葩知识,你知道吗?
2021/01/25 Javascript
详解Python实现按任意键继续/退出的功能
2016/08/19 Python
python实现的AES双向对称加密解密与用法分析
2017/05/02 Python
使用python求解二次规划的问题
2020/02/29 Python
关于python 跨域处理方式详解
2020/03/28 Python
Java servlet面试题
2012/03/04 面试题
人力资源主管岗位职责
2014/01/29 职场文书
篝火晚会主持词
2014/03/25 职场文书
承诺书的格式范文
2014/03/28 职场文书
城管综合整治方案
2014/05/01 职场文书
尊老爱幼演讲稿
2014/09/04 职场文书
离婚协议书范文2014(夫妻感情破裂)
2014/12/14 职场文书
2015年大学社团工作总结
2015/04/09 职场文书
在校证明模板
2015/06/17 职场文书
运动会通讯稿100字
2015/07/20 职场文书
证婚人婚礼致辞
2015/07/28 职场文书