Próbuję dowiedzieć się, czy domyślne animacje d3 używają już requestAnimationFrame
do wywołania zwrotnego lub jeśli muszę to zrobić samodzielnie. Na przykład, mam zdefiniowane niestandardową animację, która wywołuje wielokrotnie funkcję odświeżania animacji przejścia z jednej domeny do drugiej na wykresie (jest to w coffeescript):Czy przejścia i animacje d3 używają 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)
We wszystkich moich innych połączeń odświeżenia, I zaplanować go z requestAnimationFrame
:
scheduleRedraw: =>
# Stop a previous request if it hasn't executed yet
cancelAnimationFrame(@animRequest) if @animRequest
@animRequest = requestAnimationFrame => @redraw
jednak zastanawiam się, czy muszę zrobić to samo tutaj. Patrzyłem na źródło d3 i widzę, że jedyne odniesienie do requestAnimationFrame
znajduje się w d3 timer class. Mam nadzieję, że ktoś o większej wiedzy na temat d3 może pomóc w udzieleniu odpowiedzi na następujące pytania:
- Czy licznik czasu d3 jest stosowany globalnie dla wszystkich animacji i przejść D3?
- Czy muszę ręcznie używać
requestAnimationFrame
tutaj? Jeśli nie, czy jest jakiś przypadek, w którym bym kiedykolwiek musiał użyć go podczas używania d3?