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+JSon 无刷新分页实现代码
Apr 01 Javascript
JavaScript实现点击按钮后变灰避免多次重复提交
Jul 15 Javascript
jquery实现省市select下拉框的替换(示例代码)
Feb 22 Javascript
详细分析JavaScript变量类型
Jul 08 Javascript
JavaScript中闭包的写法和作用详解
Jun 29 Javascript
详解Javascript中的原型OOP
Oct 12 Javascript
详解如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件
Jun 01 jQuery
JavaScript中的一些隐式转换和总结(推荐)
Dec 22 Javascript
详解Vue2.5+迁移至Typescript指南
Aug 01 Javascript
vue学习笔记之过滤器的基本使用方法实例分析
Feb 01 Javascript
Vuex中的Mutations的具体使用方法
Jun 01 Javascript
JavaScript大数相加相乘的实现方法实例
Oct 18 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
全国FM电台频率大全 - 23 四川省
2020/03/11 无线电
PHP个人网站架设连环讲(四)
2006/10/09 PHP
php实现无限级分类实现代码(递归方法)
2011/01/01 PHP
php 文件上传类代码
2011/08/06 PHP
php+ajax实时输入自动搜索匹配的方法
2014/12/26 PHP
php静态成员方法和静态的成员属性的使用方法
2017/10/26 PHP
xml 与javascript结合的问题解决方法
2007/03/24 Javascript
javascript 日期时间函数(经典+完善+实用)
2009/05/27 Javascript
js FLASH幻灯片字符串中有连接符&的处理方法
2012/03/01 Javascript
jQuery事件绑定.on()简要概述及应用
2013/02/07 Javascript
onkeydown事件解决按回车键直接提交数据的需求
2013/04/11 Javascript
js控制web打印(局部打印)方法整理
2013/05/29 Javascript
JQuery实现倒计时按钮具体方法
2013/11/14 Javascript
javascript中select下拉框的用法总结
2016/01/07 Javascript
解析Node.js异常处理中domain模块的使用方法
2016/02/16 Javascript
angularjs实现文字上下无缝滚动特效代码
2016/09/04 Javascript
jQuery插件zTree实现清空选中第一个节点所有子节点的方法
2017/03/08 Javascript
初识 Vue.js 中的 *.Vue文件
2017/11/22 Javascript
vue.js简单配置axios的方法详解
2017/12/13 Javascript
对vue里函数的调用顺序介绍
2018/03/17 Javascript
Vue.js 使用v-cloak后仍显示变量的解决方法
2018/11/19 Javascript
在node中使用jwt签发与验证token的方法
2019/04/03 Javascript
JS函数进阶之prototy用法实例分析
2020/01/15 Javascript
Vue实现 点击显示再点击隐藏效果(点击页面空白区域也隐藏效果)
2020/01/16 Javascript
修改Vue打包后的默认文件名操作
2020/08/12 Javascript
jQuery实现朋友圈查看图片
2020/09/11 jQuery
[00:32]2018DOTA2亚洲邀请赛Mineski出场
2018/04/04 DOTA
pymongo为mongodb数据库添加索引的方法
2015/05/11 Python
解决nohup执行python程序log文件写入不及时的问题
2019/01/14 Python
Python列表(List)知识点总结
2019/02/18 Python
Python 一键获取百度网盘提取码的方法
2019/08/01 Python
如何在Cloud Studio上执行Python代码?
2019/08/09 Python
CSS Grid布局教程之什么是网格布局
2014/12/30 HTML / CSS
Deux par Deux官方网站:设计师童装
2020/01/03 全球购物
保洁公司服务承诺书
2014/05/28 职场文书
SpringRetry重试框架的具体使用
2021/07/25 Java/Android