requestAnimationFrame
d3 のデフォルトのアニメーションが既にコールバックに使用されているのか、それとも自分で行う必要があるのかを把握しようとしています。たとえば、再描画関数を繰り返し呼び出して、グラフ上のあるドメインから別のドメインへの遷移をアニメーション化するカスタム トゥイーンを定義しました (これは 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 の使用中に自分で使用する必要がある場合はありますか?