Я пытаюсь выяснить, используют ли анимации 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. класс таймера. Надеюсь, кто-то, кто знает больше о d3, может помочь ответить на следующие вопросы:
- Используется ли таймер d3 глобально для всех анимаций и переходов d3?
- Нужно ли мне использовать
requestAnimationFrame
вручную здесь? Если нет, есть ли случай, когда мне когда-нибудь понадобится использовать его самостоятельно при использовании d3?