HTML5 Canvas,沿路径等距点

HTML5 Canvas, Equally Spaced Dots Following a Path

我是第一次尝试 HTML5 Canvas,因为我需要创建一条弯曲的路径,看起来像这样:

现在图片显示的是第一种情况,它只是一条由几条贝塞尔曲线组成的实心笔划路径。我想要实现的是使路径以某种方式点缀,然后突出显示路径的特定部分以说明路径上的进度(这是用于游戏)。

除了对贝塞尔二分法进行数学计算,沿着我用数学计算的路径绘制点(我读过一些论文,这些论文似乎展示了如何有效地做到这一点,但这似乎有点矫枉过正),我想知道是否有一些简单的方法可以达到这种效果。谢谢!

编辑:我找到了这个答案,dotted stroke in <canvas> 但它并没有完全解决我想到的关于贝塞尔曲线的更复杂的情况。这个的直线版本真的很容易实现:)

编辑:应该也适用于 IE

https://jsfiddle.net/9m8wo0ef/2/

  var canvas = document.getElementById('myCanvas');
  var context = canvas.getContext('2d');

  context.setLineDash([5, 15]);

  context.beginPath();
  context.moveTo(100, 20);

  // bezier curve
  context.bezierCurveTo(290, -40, 300, 200, 400, 150);

  context.lineWidth = 5;
  context.strokeStyle = 'blue';
  context.stroke();

  // second half of curve
  context.beginPath();
  context.strokeStyle="#DDDDFF";
  context.bezierCurveTo(400, 150, 500, 120, 450, 20);
  context.stroke();

注意:第二条曲线(浅色路径)必须从第一条路径停止的地方开始 - 在本例中为 400、150。