2013-03-27 13 views
8

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?

Odpowiedz

8

Od d3's wiki:Transitions:Timer

Jeśli Twoja przeglądarka je obsługuje, kolejka zegar użyje requestAnimationFrame dla animacji płynów i skuteczny.

Powiązane problemy