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 相关文章推荐
ajax 缓存 问题 requestheader
Aug 01 Javascript
javascript 运算数的求值顺序
Aug 23 Javascript
文字不间断滚动(上下左右)实例代码
Apr 21 Javascript
JS 页面计时器示例代码
Oct 28 Javascript
jquery获取css中的选择器(实例讲解)
Dec 02 Javascript
javascript里使用php代码实例
Dec 13 Javascript
javascript 获取浏览器版本
Jan 21 Javascript
jQuery实现自定义右键菜单的树状菜单效果
Sep 02 Javascript
JavaScript实现下拉菜单的显示和隐藏
Jan 05 Javascript
Angular2中Bootstrap界面库ng-bootstrap详解
Oct 18 Javascript
AngularJS中的Promise详细介绍及实例代码
Dec 13 Javascript
利用Javascript实现一套自定义事件机制
Dec 14 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添加Xdebug扩展的方法
2014/02/12 PHP
[原创]smarty简单模板变量输出方法
2016/07/09 PHP
PHP多进程编程之僵尸进程问题的理解
2017/10/15 PHP
PHP开发之用微信远程遥控服务器
2018/01/25 PHP
javascript新手语法小结
2008/06/15 Javascript
javascript十个最常用的自定义函数(中文版)
2009/09/07 Javascript
提升你网站水平的jQuery插件集合推荐
2011/04/19 Javascript
怎么清空javascript数组
2013/05/11 Javascript
javascript作用域问题实例分析
2015/07/13 Javascript
Bootstrap使用基础教程详解
2016/09/05 Javascript
JavaScript对象创建模式实例汇总
2016/10/03 Javascript
Vue2.0 实现单选互斥的方法
2018/04/13 Javascript
微信小程序渲染性能调优小结
2019/07/30 Javascript
node解析修改nginx配置文件操作实例分析
2019/11/06 Javascript
vue和小程序项目中使用iconfont的方法
2020/05/19 Javascript
原生JavaScript实现幻灯片效果
2021/02/19 Javascript
[03:22]DAC最前线(第二期)—DOTA2亚洲邀请赛主赛场周边及线路探访
2015/01/24 DOTA
Python获取当前公网ip并自动断开宽带连接实例代码
2018/01/12 Python
python3 中文乱码与默认编码格式设定方法
2018/10/31 Python
浅谈Python接口对json串的处理方法
2018/12/19 Python
Python模块 _winreg操作注册表
2020/02/05 Python
windows下python安装pip方法详解
2020/02/10 Python
CSS3实现超慢速移动动画效果非常流畅无卡顿
2014/06/15 HTML / CSS
英国领先的运动物理治疗供应公司:Vivomed
2018/07/14 全球购物
学校大课间活动方案
2014/01/30 职场文书
简历里的自我评价范文
2014/02/24 职场文书
党员干部公开承诺书
2014/03/26 职场文书
合作协议书范文
2014/08/20 职场文书
我们的节日元宵活动方案
2014/08/23 职场文书
2014公司党员自我评价范文
2014/09/11 职场文书
2015中秋节慰问信范文
2015/03/23 职场文书
工作收入证明范本
2015/06/12 职场文书
2016大学生毕业实习心得体会
2016/01/23 职场文书
MySql开发之自动同步表结构
2021/05/28 MySQL
Pandas数据类型之category的用法
2021/06/28 Python
基于Python和openCV实现图像的全景拼接详细步骤
2021/10/05 Python