我试图弄清楚 d3 的默认动画requestAnimationFrame
是否已经用于回调,或者我是否需要自己做。例如,我已经定义了一个自定义补间,它反复调用重绘函数来动画在图形上从一个域到另一个域的过渡(这是在咖啡脚本中):
rd = @redraw # a function that takes an argument to redraw the graph
@svg.transition()
.duration(1000)
.tween "zoom", ->
interp = d3.interpolate(current_dom, target_dom)
(t) -> rd interp(t)
在我所有其他重绘调用中,我安排它requestAnimationFrame
:
scheduleRedraw: =>
# Stop a previous request if it hasn't executed yet
cancelAnimationFrame(@animRequest) if @animRequest
@animRequest = requestAnimationFrame => @redraw
但是,我想知道我是否需要在这里做同样的事情。我一直在查看 d3 源代码,发现唯一的引用requestAnimationFrame
是在d3 计时器类中。希望对 d3 有更多了解的人可以帮助回答以下问题:
- d3 计时器是否全局用于所有 d3 动画和过渡?
- 我需要在
requestAnimationFrame
这里手动使用吗?如果没有,在使用 d3 时我是否需要自己使用它?