canvas轨迹回放功能实现


Posted in Javascript onDecember 20, 2017

本文通过json机构,HTML代码以及JS代码详细给大家分析了canvas轨迹回放功能实现的过程,以下是全部内容。

json结构

[
  {
    "path": [
      {
        "x": 82, 
        "y": 43
      }, 
      {
        "x": 83, 
        "y": 43
      }, 
      {
        "x": 84, 
        "y": 45
      }, 
      {
        "x": 86, 
        "y": 47
      }, 
      {
        "x": 86, 
        "y": 49
      }, 
      {
        "x": 86, 
        "y": 54
      }, 
      {
        "x": 86, 
        "y": 59
      }, 
      {
        "x": 86, 
        "y": 64
      }, 
      {
        "x": 86, 
        "y": 69
      }, 
      {
        "x": 86, 
        "y": 74
      }, 
      {
        "x": 86, 
        "y": 78
      }, 
      {
        "x": 86, 
        "y": 83
      }, 
      {
        "x": 86, 
        "y": 87
      }, 
      {
        "x": 86, 
        "y": 89
      }, 
      {
        "x": 86, 
        "y": 91
      }, 
      {
        "x": 86, 
        "y": 92
      }, 
      {
        "x": 86, 
        "y": 93
      }, 
      {
        "x": 86, 
        "y": 94
      }, 
      {
        "x": 86, 
        "y": 95
      }
    ]
  }, 
  {
    "path": [
      {
        "x": 129, 
        "y": 36
      }, 
      {
        "x": 129, 
        "y": 39
      }, 
      {
        "x": 129, 
        "y": 44
      }, 
      {
        "x": 129, 
        "y": 49
      }, 
      {
        "x": 129, 
        "y": 54
      }, 
      {
        "x": 129, 
        "y": 59
      }, 
      {
        "x": 128, 
        "y": 65
      }, 
      {
        "x": 127, 
        "y": 73
      }, 
      {
        "x": 125, 
        "y": 78
      }, 
      {
        "x": 125, 
        "y": 81
      }, 
      {
        "x": 124, 
        "y": 88
      }, 
      {
        "x": 123, 
        "y": 91
      }, 
      {
        "x": 123, 
        "y": 94
      }, 
      {
        "x": 123, 
        "y": 96
      }, 
      {
        "x": 123, 
        "y": 97
      }, 
      {
        "x": 123, 
        "y": 98
      }, 
      {
        "x": 123, 
        "y": 99
      }, 
      {
        "x": 122, 
        "y": 100
      }
    ]
  }
]

html

将json作为js文件引入,并将其赋值给全局变量testPath(引入方式按照实际项目要求来)

<style>
*{margin:0; padding:0;}
#test{border:1px solid #ccc; background: #eee; margin:20px 30px;}
</style>
<p><button id="start">start</button></p>
<canvas id='test' width="600" height="200"></canvas>
<script type="text/javascript" src='js/jquery-2.1.4.min.js'></script>
<script type="text/javascript" src='js/number.js'></script>

js

$('#start').click(function(event) {
  var lineIndex = 0,pointIndex = 0,line2;
  var obj = document.getElementById('test');
  var cxt = obj.getContext('2d');
  cxt.lineWidth = 1;
  cxt.strokeStyle = 'red';
  cxt.lineCap = 'round';
  cxt.clearRect(0,0,600,200);
  function drawBegin(){
    cxt.beginPath();
    pointIndex=0;
    var intervalHandle = window.setInterval(function () {
      line2 = testPath[lineIndex].path[pointIndex];
      if (!line2) {
        window.clearInterval(intervalHandle);
        if (lineIndex < testPath.length - 1) {
          lineIndex = lineIndex + 1;
          drawBegin();
        }
      }else{
        if (pointIndex == 0) {
          cxt.moveTo(line2.x, line2.y);
        }
        pointIndex = pointIndex + 1;
        cxt.lineTo(line2.x, line2.y);
        cxt.stroke();
      }
    },0);
  }
  drawBegin();
});

以上就是本次文章的全部内容,如果大家在测试的时候还有什么疑问,可以在下方的留言区讨论。

Javascript 相关文章推荐
Extjs学习笔记之二 初识Extjs之Form
Jan 07 Javascript
js判断当页面无法回退时关闭网页否则就history.go(-1)
Aug 07 Javascript
jQuery使用height()获取高度需要注意的地方
Dec 13 Javascript
jQuery中:text选择器用法实例
Jan 03 Javascript
jQuery中children()方法用法实例
Jan 07 Javascript
jquery实现对联广告的方法
Feb 05 Javascript
为jQuery-easyui的tab组件添加右键菜单功能的简单实例
Oct 10 Javascript
详解angular中如何监控dom渲染完毕
Jan 03 Javascript
Node.js操作redis实现添加查询功能
May 25 Javascript
AngularJS中使用three.js的实例详解
Jul 21 Javascript
Vue 组件(component)教程之实现精美的日历方法示例
Jan 08 Javascript
Axios代理配置及封装响应拦截处理方式
Apr 07 Vue.js
jQuery实现动态控制页面元素的方法分析
Dec 20 #jQuery
js实现以最简单的方式将数组元素添加到对象中的方法
Dec 20 #Javascript
浅谈gulp创建完整的项目流程
Dec 20 #Javascript
vue使用axios实现文件上传进度的实时更新详解
Dec 20 #Javascript
JavaScript通过mouseover()实现图片变大效果的示例
Dec 20 #Javascript
详解JS模块导入导出
Dec 20 #Javascript
vue实现样式之间的切换及vue动态样式的实现方法
Dec 19 #Javascript
You might like
php实现mysql数据库备份类
2008/03/20 PHP
php 文章调用类代码
2011/08/11 PHP
PHP字符串函数系列之nl2br(),在字符串中的每个新行 (\n) 之前插入 HTML 换行符br
2011/11/10 PHP
php设计模式小结
2013/02/15 PHP
jQuery获取json后使用zy_tmpl生成下拉菜单
2015/03/27 PHP
php动态生成缩略图并输出显示的方法
2015/04/20 PHP
PHP实用小技巧之调用录像的方法
2019/12/05 PHP
js中关于new Object时传参的一些细节分析
2011/03/13 Javascript
js两行代码按指定格式输出日期时间
2011/10/21 Javascript
jquery取子节点及当前节点属性值的方法
2014/09/09 Javascript
jquery 实现回车登录详解及实例代码
2016/10/23 Javascript
Javascript使用SWFUpload进行多文件上传
2016/11/16 Javascript
使用Angular CLI生成路由的方法
2018/03/24 Javascript
vue内置指令详解
2018/04/03 Javascript
解析vue路由异步组件和懒加载案例
2018/06/08 Javascript
Node.js的进程管理的深入理解
2019/01/09 Javascript
js中怎么判断两个字符串相等的实例
2019/01/17 Javascript
微信小程序实现的图片保存功能示例
2019/04/24 Javascript
EasyUI 数据表格datagrid列自适应内容宽度的实现
2019/07/18 Javascript
vue输入节流,避免实时请求接口的实例代码
2019/10/30 Javascript
vue中 v-for循环的用法详解
2020/02/19 Javascript
leaflet加载geojson叠加显示功能代码
2020/02/21 Javascript
Python中实现两个字典(dict)合并的方法
2014/09/23 Python
python操作ssh实现服务器日志下载的方法
2015/06/03 Python
flask的orm框架SQLAlchemy查询实现解析
2019/12/12 Python
Python fileinput模块如何逐行读取多个文件
2020/10/05 Python
夏威夷咖啡公司:Hawaii Coffee Company
2019/09/19 全球购物
空字符串(“”)和null的区别
2012/11/13 面试题
材料采购员岗位职责
2013/12/17 职场文书
大学生自我评价范文分享
2014/02/21 职场文书
班主任新年寄语
2014/04/04 职场文书
2014年四风问题个人对照自查剖析材料
2014/09/15 职场文书
工厂清洁工岗位职责
2015/02/14 职场文书
慰问信格式规范
2015/03/23 职场文书
2016年先进教师个人事迹材料
2016/02/26 职场文书
Win11控制面板快捷键是什么?Win11打开控制面板的方法汇总
2022/07/07 数码科技