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();
});

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

(0)

相关推荐

  • canvas轨迹回放功能实现

    本文通过json机构,HTML代码以及JS代码详细给大家分析了canvas轨迹回放功能实现的过程,以下是全部内容. json结构 [ { "path": [ { "x": 82, "y": 43 }, { "x": 83, "y": 43 }, { "x": 84, "y": 45 }, { "x": 86, "y": 47 }

  • Openlayers3实现车辆轨迹回放功能

    记录基于geoserver地图服务,Openlayers3在web前端实现车辆轨迹回放功能,并记录和解决过程中出现的linestring只描绘部分经纬度坐标问题. 参考Openlayers3 官网例子 html <!DOCTYPE html> <html lang="en"> <head> <title>车辆轨迹回放</title> <meta charset="UTF-8"/> <met

  • silverlight线程与基于事件驱动javascript引擎(实现轨迹回放功能)

    案例背景: 整个功能其实就是从数据库取出数据,然后在界面上播放,简单地说就是类似网上在线看视频,听音乐,只不过我取的是字符串数据,而他们取的是流文件数据.把整体数据分成十份,十个线程同时向数据库取数据(并发提高速度)放在十个队列中,另外一个线程从队列中取数据拿出来到界面上播放,可以拖动播放进度,停止,暂停,重新播放,控制播放速度.恩,功能听起来似乎很简单,做起来也不是很难.但是后面发现的一些问题,以及顺着这些问题往下挖掘,挖掘了一些我认为值得记住的东西. 关键东西: 1. siliverligh

  • 详解微信小程序轨迹回放实现及遇到的坑

    微信小程序轨迹回放主要使用到polyline进行划线操作,以及使用marker去进行小车移动操作.效果图如下: 具体实现代码: trackplay.wxml文件 <!--pages/tracker/tracker.wxml--> <map id="mymap" longitude="{{mapCenter.longitude}}" latitude="{{mapCenter.latitude}}" scale="{{s

  • openlayers 3实现车辆轨迹回放

    本文实例为大家分享了openlayers 3实现车辆轨迹回放的具体代码,供大家参考,具体内容如下 先上效果: 利用 openlayers 3地图的 postcompose 事件监听地图的重绘 注意:此代码是我在Vue 的methods 里面写的测试方法,并不能直接运行,请在理解的基础上测试. vm 为vue的this对象 注释已经很丰富了,先做个备份,后期会编辑加入一点详解. 实现代码: html: <div id="menu"> <label for="s

  • 微信小程序canvas实现签名功能

    在微信小程序项目中,开发模块涉及到手写签名功能,微信小程序canvas闪亮登场 前言 微信小程序canvas实现签名功能 核心内容简介: (1)签名实现,开始,移动,结束 (2)重写 (3)完成 (4)上传 一.微信小程序canvas实现签名功能 效果演示: (1)签名实现 (2)重写 (3)完成 完成后将图片展示在相应的位置 (4)根据业务需求,可以将图片上传到后台,在需要的地方展示 二.上代码 1.全部演示 wxml <!--pages/canvas-test/canvas-test.wxm

  • c# wpf使用GMap.NET类库,实现地图轨迹回放

    前言 实现轨迹回放,GMap.NET有对应的类GMapRoute.这个类函数很少,功能有限,只能实现简单的轨迹回放.要实现更复杂的轨迹回放,就需要自己动手了. 本文介绍一种方法,可以实现复杂的轨迹回放.有句话"功夫在诗外",GMap.NET给你提供了基本地图处理功能:但是不要让CMap.NET束缚了手脚.你需要有深刻理解地图实现原理,深入理解WPF动画的原理,才能到达随心所欲.最终的效果如下: GMap.NET 显示原理 地图就是由许多方格"瓦片"组合而来.当你移动

  • 基于canvas剪辑区域功能实现橡皮擦效果

    效果如图 这是基础结构 没什么好说的 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-C

  • 微信小程序实现的canvas合成图片功能示例

    本文实例讲述了微信小程序实现的canvas合成图片功能.分享给大家供大家参考,具体如下: 先要获取图片的信息  然后将需要合成的内容用canvas绘制出来,得到一个合成好的画布,接下来用 wx.canvasToTempFilePath 把当前画布指定区域的内容导出生成指定大小的图片,并返回文件路径.这个时候的路径 是微信的临时路径,浏览器是访问不了的,因此需要请求服务器  用 wx.uploadFile 将本地资源上传到开发者服务器. 在页面的wxml中加入canvas组件如下: <view c

  • javascript+HTML5 canvas绘制时钟功能示例

    本文实例讲述了javascript+HTML5 canvas绘制时钟功能.分享给大家供大家参考,具体如下: 效果如下: 代码: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>www.jb51.net canvas绘制时钟</title> <style> div{text-align:cent

随机推荐