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 相关文章推荐
document.getElementById为空或不是对象的解决方法
Jan 24 Javascript
SwfUpload在IE10上不出现上传按钮的解决方法
Jun 25 Javascript
from 表单提交返回值用post或者是get方法实现
Aug 21 Javascript
js/jquery判断浏览器的方法小结
Sep 02 Javascript
JavaScript中的无阻塞加载性能优化方案
Oct 10 Javascript
Jquery中find与each方法用法实例
Feb 04 Javascript
jquery实现两边飘浮可关闭的对联广告
Nov 27 Javascript
JS实现1000以内被3或5整除的数字之和
Feb 18 Javascript
vue表单验证你真的会了吗?vue表单验证(form)validate
Apr 07 Javascript
Vue动态生成表格的行和列
Jul 18 Javascript
Vue 自定义指令实现一键 Copy功能
Sep 16 Javascript
一篇文章了解正则表达式的替换技巧
Feb 24 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代码
2012/06/08 PHP
PHP使用DES进行加密与解密的方法详解
2013/06/06 PHP
php操作mysql数据库的基本类代码
2014/02/25 PHP
PHP+iframe图片上传实现即时刷新效果
2016/11/18 PHP
php防止sql注入的方法详解
2017/02/20 PHP
php redis实现对200w用户的即时推送
2017/03/04 PHP
php递归函数怎么用才有效
2018/02/24 PHP
PHP5.6.8连接SQL Server 2008 R2数据库常用技巧分析总结
2019/05/06 PHP
php+laravel依赖注入知识点总结
2019/11/04 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
jquery中的 $(&quot;#jb51&quot;)与document.getElementById(&quot;jb51&quot;) 的区别
2011/07/26 Javascript
让新消息在网页标题闪烁提示的jQuery代码
2013/11/04 Javascript
node.js中Socket.IO的进阶使用技巧
2014/11/04 Javascript
jQuery实现不断闪烁文字的方法
2015/05/15 Javascript
微信小程序 textarea 详解及简单使用方法
2016/12/05 Javascript
JavaScript类型相关的常用操作总结
2019/02/14 Javascript
Bootstrap table 实现树形表格联动选中联动取消功能
2019/09/30 Javascript
[01:34]2014DOTA2展望TI 剑指西雅图VG战队专访
2014/06/30 DOTA
[55:11]完美世界DOTA2联赛PWL S2 SZ vs LBZS 第一场 11.26
2020/11/30 DOTA
python爬虫_微信公众号推送信息爬取的实例
2017/10/23 Python
python3如何将docx转换成pdf文件
2018/03/23 Python
浅谈flask源码之请求过程
2018/07/26 Python
Python中的取模运算方法
2018/11/10 Python
pygame实现俄罗斯方块游戏(基础篇2)
2019/10/29 Python
python使用docx模块读写docx文件的方法与docx模块常用方法详解
2020/02/17 Python
Keras 中Leaky ReLU等高级激活函数的用法
2020/07/05 Python
对Pytorch 中的contiguous理解说明
2021/03/03 Python
css3 给页面加个半圆形导航条主要利用旋转和倾斜样式
2014/02/10 HTML / CSS
Java servlet面试题
2012/03/04 面试题
教师党员自我剖析材料
2014/09/29 职场文书
云台山导游词
2015/02/03 职场文书
毕业生学校组织意见
2015/06/04 职场文书
金正昆讲礼仪观后感
2015/06/11 职场文书
2015年大学迎新工作总结
2015/07/16 职场文书
2016年第32个教师节致辞
2015/11/26 职场文书
情况说明书格式及范文
2019/06/24 职场文书