canvas轨迹回放功能实现

 更新时间:2017年12月20日 09:09:28   投稿:laozhang  
这篇文章主要介绍了canvas轨迹回放功能实现过程以及相关的代码整理,跟着小编一起学习下吧。

本文通过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();
});

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

相关文章

  • Object.keys()、Object.values()、Object.entries()用法总结

    Object.keys()、Object.values()、Object.entries()用法总结

    本文主要介绍了Object.keys()、Object.values()、Object.entries()用法总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • JS使用Promise时常见的5个错误总结

    JS使用Promise时常见的5个错误总结

    Promise 提供了一种优雅的方法来处理 JS 中的异步操作。这也是避免“回调地狱”的解决方案。然而,并没有多少开发人员了解其中的内容。因此,许多人在实践中往往会犯错误。在本文中,介绍一下使用 promise 时的五个常见错误,希望大家能够避免
    2022-11-11
  • 微信小程序表单验证错误提示效果

    微信小程序表单验证错误提示效果

    这篇文章主要为大家详细介绍了微信小程序表单验证错误提示效果,点击确认发布不能为空错误提示,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • js控制多图左右滚动切换效果代码分享

    js控制多图左右滚动切换效果代码分享

    这篇文章主要介绍了js控制多图左右滚动切换效果,很实用的代码,推荐给大家,有需要的小伙伴可以参考下。
    2015-08-08
  • Echarts柱状图修改柱子颜色渐变及柱子圆角效果实例

    Echarts柱状图修改柱子颜色渐变及柱子圆角效果实例

    在ECharts中,可以通过修改series.itemStyle.normal属性来定制柱状图的柱子样式,包括圆角和背景色渐变,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-09-09
  • JavaScript中break、continue和return的用法区别实例分析

    JavaScript中break、continue和return的用法区别实例分析

    这篇文章主要介绍了JavaScript中break、continue和return的用法区别,结合实例形式详细对比分析了JavaScript中break、continue和return的基本功能、使用方法、区别与操作注意事项,需要的朋友可以参考下
    2020-03-03
  • 常用Javascript函数与原型功能收藏(必看篇)

    常用Javascript函数与原型功能收藏(必看篇)

    下面小编就为大家带来一篇常用Javascript函数与原型功能收藏(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-10-10
  • javascript 静态对象和构造函数的使用和公私问题

    javascript 静态对象和构造函数的使用和公私问题

    静态对象和构造函数的使用区别 平常我们会经常使用JSON形式,或者var obj=function(){}亦或function(){}这么几种对象的构建办法,有时会认为这是等价的办法,然而他们还有不同。
    2010-03-03
  • javascript 获取元素样式必杀技

    javascript 获取元素样式必杀技

    这篇文章主要介绍了javascript 获取元素样式必杀技,需要的朋友可以参考下
    2014-05-05
  • uniApp实现热更新的思路与详细过程

    uniApp实现热更新的思路与详细过程

    经常在做app的时候,会有做热更新的需求,这也是常用的更新app的一种手段,下面这篇文章主要给大家介绍了关于uniApp实现热更新的思路与详细过程,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-11-11

最新评论