10

requestAnimationFramed3 のデフォルトのアニメーションが既にコールバックに使用されているのか、それとも自分で行う必要があるのか​​を把握しようとしています。たとえば、再描画関数を繰り返し呼び出して、グラフ上のあるドメインから別のドメインへの遷移をアニメーション化するカスタム トゥイーンを定義しました (これは 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ソースを見てきましたが、への唯一の参照がrequestAnimationFramed3タイマークラスにあることがわかりました。うまくいけば、d3 についてもう少し知識のある人が、次の質問に答えるのに役立ちます。

  • d3 タイマーは、すべての d3 アニメーションとトランジションでグローバルに使用されていますか?
  • requestAnimationFrameここで手動で使用する必要がありますか? そうでない場合、d3 の使用中に自分で使用する必要がある場合はありますか?
4

1 に答える 1