我正在试图弄清楚d3的默认动画是否已经使用requestAnimationFrame
进行回调,或者我是否需要自己进行回调。例如,我已经定义了一个自定义补间,它重复调用重绘函数,以动画在图形上从一个域转换到另一个域(这是在coffeescript中):
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 timer class。希望对d3有更多了解的人可以帮助回答以下问题:
requestAnimationFrame
?如果没有,是否有任何我需要在使用d3时自己使用它的情况?答案 0 :(得分:8)
如果您的浏览器支持,则使用计时器队列 requestAnimationFrame用于流畅和高效的动画。