Sto cercando di capire se le animazioni predefinite di d3 usano già requestAnimationFrame
per il callback o se devo farlo da solo. Per esempio, ho definito un'interpolazione personalizzato che chiama una funzione di ridisegno ripetutamente all'animazione una transizione da un dominio ad un altro su un grafico (questo è in CoffeeScript):Le transizioni e le animazioni di d3 utilizzano 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)
In tutte le mie altre chiamate a ridisegnare, I programmare con requestAnimationFrame
:
scheduleRedraw: =>
# Stop a previous request if it hasn't executed yet
cancelAnimationFrame(@animRequest) if @animRequest
@animRequest = requestAnimationFrame => @redraw
Tuttavia, mi chiedo se ho bisogno di fare la stessa cosa qui. Sono stato a guardare la fonte d3 e vedere che l'unico riferimento a requestAnimationFrame
è nel d3 timer class. Speriamo che qualcuno con qualche conoscenza in più su d3 possa rispondere alle seguenti domande:
- Il timer d3 è utilizzato globalmente per tutte le animazioni e transizioni d3?
- Devo utilizzare manualmente
requestAnimationFrame
qui? In caso contrario, c'è qualche caso in cui dovrei mai usarlo io stesso durante l'utilizzo di d3?