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 相关文章推荐
js 动态为textbox添加下拉框数据源的方法
Apr 24 Javascript
JavaScript点击按钮后弹出透明浮动层的方法
May 11 Javascript
jQuery-1.9.1源码分析系列(十一)DOM操作续之克隆节点
Dec 01 Javascript
jQuery旋转木马式幻灯片轮播特效
Dec 04 Javascript
Bootstrap插件全集
Jul 18 Javascript
使用jQuery调用XML实现无刷新即时聊天
Aug 07 Javascript
基于vuejs+webpack的日期选择插件
May 21 Javascript
Vue实例简单方法介绍
Jan 20 Javascript
基于jQuery插件jqzoom实现的图片放大镜效果示例
Jan 23 Javascript
用JavaScript做简易的购物车的代码示例
Oct 20 Javascript
看看“疫苗查询”小程序有温度的代码
Jul 31 Javascript
从0到1搭建element后台框架优化篇(打包优化)
May 12 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下HTTP Response中的Chunked编码实现方法
2008/11/19 PHP
PHP版本如何选择?应该使用哪个版本?
2015/05/13 PHP
通过PHP简单实例介绍文件上传
2015/12/16 PHP
Laravel 自带的Auth验证登录方法
2019/09/30 PHP
关于javascript document.createDocumentFragment()
2009/04/04 Javascript
jQuery 性能优化指南 (1)
2009/05/21 Javascript
基于Jquery的动态创建DOM元素的代码
2010/12/28 Javascript
A标签中通过href和onclick传递的this对象实现思路
2013/04/19 Javascript
json数据的列循环示例
2013/09/06 Javascript
javascript面向对象之共享成员属性与方法及prototype关键字用法
2015/01/13 Javascript
Bootstrap开发实战之第一次接触Bootstrap
2016/06/02 Javascript
angular forEach方法遍历源码解读
2017/01/25 Javascript
Vue实现选择城市功能
2017/05/27 Javascript
ionic3 懒加载
2017/08/16 Javascript
iview给radio按钮组件加点击事件的实例
2017/09/30 Javascript
JS控制鼠标拒绝点击某一按钮的实例
2017/12/29 Javascript
详解从0开始搭建微信小程序(前后端)的全过程
2019/04/15 Javascript
小程序接入腾讯位置服务的详细流程
2020/03/03 Javascript
Python的一些用法分享
2012/10/07 Python
django轻松使用富文本编辑器CKEditor的方法
2017/03/30 Python
利用Pandas 创建空的DataFrame方法
2018/04/08 Python
python绘制多个曲线的折线图
2020/03/23 Python
python交换两个变量的值方法
2019/01/12 Python
python计算阶乘和的方法(1!+2!+3!+...+n!)
2019/02/01 Python
将matplotlib绘图嵌入pyqt的方法示例
2020/01/08 Python
TensorFlow2.0:张量的合并与分割实例
2020/01/19 Python
python实现电子词典
2020/03/03 Python
pip安装tensorflow的坑的解决
2020/04/19 Python
Canvas绘制浮动球效果的示例
2017/12/29 HTML / CSS
印度最好的在线药品订购网站:PharmEasy
2018/11/30 全球购物
学历公证书范本
2014/04/09 职场文书
2014年销售工作总结与计划
2014/12/01 职场文书
结婚典礼主持词
2015/06/29 职场文书
HTML+CSS制作心跳特效的实现
2021/05/26 HTML / CSS
Pygame Event事件模块的详细示例
2021/11/17 Python
python单向链表实例详解
2022/05/25 Python