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字符串截取函数substr substring slice使用对比
Nov 27 Javascript
firefox下jquery ajax返回object XMLDocument处理方法
Jan 26 Javascript
javascript圆盘抽奖程序实现原理和完整代码例子
Jun 03 Javascript
javascript从image转换为base64位编码的String
Jul 29 Javascript
JavaScript实现自动变换表格边框颜色
May 08 Javascript
浅析JavaScript中的对象类型Object
May 26 Javascript
bootstrap 表单验证使用方法
Jan 11 Javascript
详解vuex 中的 state 在组件中如何监听
May 23 Javascript
解决IE7中使用jQuery动态操作name问题
Aug 28 jQuery
基于vue实现滚动条滚动到指定位置对应位置数字进行tween特效
Apr 18 Javascript
微信小程序基于canvas渐变实现的彩虹效果示例
May 03 Javascript
vue element-ui之怎么封装一个自己的组件的详解
May 20 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
绿山咖啡和蓝山咖啡
2021/03/04 新手入门
php下关于中英数字混排的字符串分割问题
2010/04/06 PHP
php数组去重实例及分析
2013/11/26 PHP
Codeigniter生成Excel文档的简单方法
2014/06/12 PHP
php实现表单多按钮提交action的处理方法
2015/10/24 PHP
PHP设计模式之工厂模式定义与用法详解
2018/04/03 PHP
PHP实现通过CURL上传文件功能示例
2018/05/30 PHP
TP5(thinkPHP5框架)基于bootstrap实现的单图上传插件用法示例
2019/05/29 PHP
JavaScript DOM 学习第三章 内容表格
2010/02/19 Javascript
Firefox下无法正常显示年份的解决方法
2014/09/04 Javascript
js实现文章文字大小字号功能完整实例
2014/11/01 Javascript
元素绑定click点击事件方法
2015/06/08 Javascript
jquery实现漂亮的二级下拉菜单代码
2015/08/26 Javascript
纯JS实现表单验证实例
2016/12/24 Javascript
jQuery EasyUi 验证功能实例解析
2017/01/06 Javascript
vue-router跳转页面的方法
2017/02/09 Javascript
很棒的vue弹窗组件
2017/05/24 Javascript
jQuery的Ajax接收java返回数据方法
2018/08/11 jQuery
vue.js实现带日期星期的数字时钟功能示例
2018/08/28 Javascript
JS 验证码功能的三种实现方式
2018/11/26 Javascript
VUE中使用HTTP库Axios方法详解
2020/02/05 Javascript
element日历calendar组件上月、今天、下月、日历块点击事件及模板源码
2020/07/27 Javascript
vue设置全局访问接口API地址操作
2020/08/14 Javascript
python中argparse模块用法实例详解
2015/06/03 Python
Python scikit-learn 做线性回归的示例代码
2017/11/01 Python
Python cookbook(数据结构与算法)将序列分解为单独变量的方法
2018/02/13 Python
Python使用OpenCV进行标定
2018/05/08 Python
Sanic框架流式传输操作示例
2018/07/18 Python
Python魔术方法专题
2020/06/19 Python
css3 box-shadow阴影(外阴影与外发光)图示讲解
2017/08/11 HTML / CSS
ETO男装官方网店:ETO Jeans
2019/02/28 全球购物
办公室文秘自我鉴定
2013/09/21 职场文书
天鹅的故事教学反思
2014/02/04 职场文书
学生干部学习的自我评价
2014/02/18 职场文书
幼儿园秋季开学寄语
2014/08/02 职场文书
Nginx流量拷贝ngx_http_mirror_module模块使用方法详解
2022/04/07 Servers