【问题标题】:Animate a circle being drawn using Paper.js使用 Paper.js 绘制圆形动画
【发布时间】:2016-09-26 15:41:39
【问题描述】:

我正在尝试为正在使用 Paper.js 绘制的圆设置动画。

由于圆形工具只是用于实例化通过 moveTo/arcTo 等构造的路径的快速访问,因此没有支持开始和结束角度的参数(对于像开放饼图一样的圆圈)。

我正在寻找的是一种方法,可以将绘制的圆从第一个点动画到我选择的某个半径的角度。

要指定的实际画布specification allows for explicit startAngle and endAngle。如果在 Paper.js 中是这种情况,我可以轻松实现我正在寻找的东西。但是,在 Paper.js 中,我还没有遇到过复制这种控制的方法。我在 Fabric.js 中创建了一些东西,它作为 Fabric 的圆形实现使用了与规范中的 arc 命令相同的属性。

有谁知道可以实现这一点的方法,以便我可以为 endAngle 设置动画?

【问题讨论】:

  • Canvas 的原生绘图命令在 Path 中可用 -- 参见 Path.Arc
  • 是的,我已经看到了,但是原生 arc 的增强和 paper 的实现之间存在很大差异。在尝试动画绘制圆时,“通过”似乎完全抽象为一个值。至少在我的脑海中,我不明白它是如何被动画来显示一个圆圈的。绘制路径后,您甚至可以操作“from”、“through”和“to”属性吗?它们似乎不是可访问的属性。
  • 您可以设置动画循环:删除旧的较小弧并添加新的较大弧。 ;-)
  • 谢谢,但这不是效率很低吗?此外,当我画一个圆圈时,我可以创建“从”和“到”点,但不知道如何创建“通过”点。有什么想法吗?
  • 所有画布动画都涉及擦除画布和重绘更新的形状。您可以使用三角函数来计算从、通过、到。试一试。如果你不能管理。晚饭后我会发布答案。 :-)

标签: javascript canvas paperjs


【解决方案1】:

这是一个转换函数,它接受 html5 画布弧形参数并返回 Paper.js 弧形所需的 from, through, to 参数。

function canvasArcToPaperArc(cx,cy,radius,startAngle,endAngle,strokecolor){
    var startX=cx+radius*Math.cos(startAngle);
    var startY=cy+radius*Math.sin(startAngle);
    var endX=cx+radius*Math.cos(endAngle);
    var endY=cy+radius*Math.sin(endAngle);
    var thruX=cx+radius*Math.cos((endAngle-startAngle)/2);
    var thruY=cy+radius*Math.sin((endAngle-startAngle)/2);
    var from = new Point(startX,startY);
    var through = new Point(thruX,thruY);
    var to = new Point(endX,endY);
    return({from:from, through:through, to:to});
}

【讨论】:

  • 感谢您花时间发布该功能。因此,为了找到“通过”位置,您只需取当前“从”和“到”的平均值?昨晚我确实考虑过,但感谢您的意见,今天我会试一试:)
猜你喜欢
  • 1970-01-01
  • 2013-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多