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 相关文章推荐
豆瓣网的jquery代码实例
Jun 15 Javascript
一个简单的jquery进度条示例
Apr 28 Javascript
20个实用的JavaScript技巧分享
Nov 28 Javascript
解决jquery实现的radio重新选中的问题
Jul 03 Javascript
jQuery+PHP+MySQL二级联动下拉菜单实例讲解
Oct 27 Javascript
js+css实现回到顶部按钮(back to top)
Mar 02 Javascript
Radio 单选JS动态添加的选项onchange事件无效的解决方法
Dec 12 Javascript
Vue.js原理分析之observer模块详解
Feb 17 Javascript
Angularjs的启动过程分析
Jul 18 Javascript
AngularJS与BootStrap模仿百度分页的示例代码
May 23 Javascript
在axios中使用params传参的时候传入数组的方法
Sep 25 Javascript
Nuxt的动态路由和参数校验操作
Nov 09 Javascript
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
PHPwind整合最土系统用户同步登录实现方法
2010/12/08 PHP
解析php addslashes()与addclashes()函数的区别和比较
2013/06/24 PHP
ueditor 1.2.6 使用方法说明
2013/07/24 PHP
PHP屏蔽关键字实现方法
2016/11/17 PHP
PHP设计模式入门之迭代器模式原理与实现方法分析
2020/04/26 PHP
再谈IE中Flash控件的自动激活 ObjectWrap
2007/03/09 Javascript
Javascript isArray 数组类型检测函数
2009/10/08 Javascript
javascript管中窥豹 形参与实参浅析
2011/12/17 Javascript
JavaScript高级程序设计(第3版)学习笔记7 js函数(上)
2012/10/11 Javascript
javascript时间函数基础介绍
2013/03/28 Javascript
jquery+css+ul模拟列表菜单具体实现思路
2013/04/15 Javascript
javascript打印html内容功能的方法示例
2013/11/28 Javascript
jquery实现类似淘宝星星评分功能有截图
2014/09/15 Javascript
jquery获取及设置outerhtml的方法
2015/03/09 Javascript
javascript实现随时变化着的背景颜色
2015/04/02 Javascript
复杂的javascript窗口分帧解析
2016/02/19 Javascript
BootStrap和jQuery相结合实现可编辑表格
2016/04/21 Javascript
利用 spin.js 生成等待效果(js 等待效果)
2017/06/25 Javascript
Vue.js实例方法之生命周期详解
2017/07/03 Javascript
详解Vue调用手机相机和相册以及上传
2019/05/05 Javascript
vue发送websocket请求和http post请求的实例代码
2019/07/11 Javascript
在python中的socket模块使用代理实例
2014/05/29 Python
归纳整理Python中的控制流语句的知识点
2015/04/14 Python
python文件的md5加密方法
2016/04/06 Python
python3.4下django集成使用xadmin后台的方法
2017/08/15 Python
wxPython实现窗口用图片做背景
2018/04/25 Python
Python之文字转图片方法
2018/05/10 Python
django DRF图片路径问题的解决方法
2018/09/10 Python
在Python中将函数作为另一个函数的参数传入并调用的方法
2019/01/22 Python
Python Flask上下文管理机制实例解析
2020/03/16 Python
jupyter notebook 使用过程中python莫名崩溃的原因及解决方式
2020/04/10 Python
深入浅析CSS3中的Flex布局整理
2020/04/27 HTML / CSS
优秀经理事迹材料
2014/02/01 职场文书
招商引资工作汇报
2014/10/28 职场文书
公司庆典欢迎词
2015/01/26 职场文书
农村党支部承诺书
2015/04/30 职场文书