【发布时间】:2013-03-25 13:09:25
【问题描述】:
我要做什么...
我正在玩弄 D3 来制作复合动画。我有以下最终状态:
基本上我想要动画连接点 - 添加第一个 圆。然后将 line 绘制到第二个圆圈。绘制线后,添加第二个圆圈。
为了增加视觉吸引力,我执行了其他过渡,例如在绘制线条时更改第一个和第二个圆的 circle 半径。
我尝试过的...
我可以添加圆圈并单独绘制线条,包括动画。但是,我不确定如何继续将过渡链接在一起以形成复合动画。
我有read about transitions/animations,建议使用each("end")。虽然这可以绘制初始对象,但 end 直到其他转换之后才会触发。
问题
- 使用
each("end", ...)是链接转换的正确方法吗? - 如何开始另一个动画(即开始画线),同时仍然允许另一个过渡完成(即第一个圆半径爆发)。
【问题讨论】:
-
几天前,一个试图做同样事情的人在这里问了一个问题:stackoverflow.com/questions/15692910/…。我不知道他的方法是否是最惯用的方法,但它确实有效(但请参阅我对他的 Q 的回复以获取有效的 jsFiddle 链接)。
-
除了显式链接过渡之外,您还可以使用
delay()函数来延迟后续动画的开始,直到前面的动画完成。 -
@meetamit,虽然很接近,但这不是同一个问题。我仍然很好奇如何将这些链接在一起。他似乎有一套动画,不一定相互依赖。
-
@Lars Kotthoff,我会调查的。但请记住,一些转换是并行运行的。因此,延迟不一定会全面发挥作用。
-
只要你能确定每个过渡应该何时开始,它就应该如此。例如,如果您的线条是在 1 秒内绘制的,那么您会将绘制第二个圆的过渡延迟该时间。
标签: javascript animation d3.js transitions chained