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 Ajax 实例全解析
Apr 20 Javascript
JavaScript中的私有/静态属性介绍
Jul 26 Javascript
js或者jquery判断图片是否加载完成实现代码
Mar 20 Javascript
Jquery获取元素的父容器对象示例代码
Feb 10 Javascript
纯js代码实现简单计算器
Dec 02 Javascript
jQuery实现移动端滑块拖动选择数字效果
Dec 24 Javascript
Javascript中Date类型和Math类型详解
Feb 27 Javascript
jQuery插件开发发送短信倒计时功能代码
May 09 jQuery
JavaScript正则表达式校验与递归函数实际应用实例解析
Aug 04 Javascript
JS中双击和单击事件冲突的解决方法
Apr 09 Javascript
详解Howler.js Web音频播放终极解决方案
Aug 23 Javascript
详解 TypeScript 枚举类型
Nov 02 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
一个目录遍历函数
2006/10/09 PHP
15个小时----从修改程序到自己些程序
2006/10/09 PHP
PHP基于php_imagick_st-Q8.dll实现JPG合成GIF图片的方法
2014/07/11 PHP
php for 循环使用的简单实例
2016/06/02 PHP
php 遍历目录,生成目录下每个文件的md5值并写入到结果文件中
2016/12/12 PHP
laravel中的fillable和guarded属性详解
2019/10/23 PHP
Google排名中的10个最著名的 JavaScript库
2010/04/27 Javascript
qTip2 精致的基于jQuery提示信息插件
2012/02/17 Javascript
js中文逗号转英文实现
2014/02/11 Javascript
jQuery实现新消息闪烁标题提示的方法
2015/03/11 Javascript
js图片卷帘门导航菜单特效代码分享
2015/09/10 Javascript
EasyUI闪屏EasyUI页面加载提示(原理+代码+效果图)
2016/02/21 Javascript
JavaScript中常用的验证reg
2016/10/13 Javascript
Bootstrap 网格系统布局详解
2017/03/19 Javascript
Angular4项目中添加i18n国际化插件ngx-translate的步骤详解
2017/07/02 Javascript
js封装成插件的步骤方法
2017/09/11 Javascript
jQuery实现动态添加节点与遍历节点功能示例
2017/11/09 jQuery
python中关于日期时间处理的问答集锦
2013/03/08 Python
Python中的装饰器用法详解
2015/01/14 Python
Windows下将Python文件打包成.EXE可执行文件的方法
2018/08/03 Python
3个用于数据科学的顶级Python库
2018/09/29 Python
python中的&amp;&amp;及||的实现示例
2019/08/07 Python
解决Django删除migrations文件夹中的文件后出现的异常问题
2019/08/31 Python
基于Python批量生成指定尺寸缩略图代码实例
2019/11/20 Python
Python通过Tesseract库实现文字识别
2020/03/05 Python
PyPDF2读取PDF文件内容保存到本地TXT实例
2020/05/12 Python
加州风格的游泳和沙滩装品牌:Cupshe
2019/06/10 全球购物
简短证婚人证婚词
2014/01/09 职场文书
通信生自我鉴定
2014/01/18 职场文书
合作协议书范本
2014/04/17 职场文书
廉洁教育学习材料
2014/05/19 职场文书
立志成才演讲稿
2014/09/04 职场文书
2014年仓库管理工作总结
2014/12/17 职场文书
2015年社区党建工作汇报材料
2015/06/25 职场文书
旷工检讨书大全
2015/08/15 职场文书
关于k8s环境部署mysql主从的问题
2022/03/13 MySQL