4

有谁知道我如何为 D3 的转换完成每帧回调。这是我目前正在做的事情的一个例子。

link.transition()
    .duration(duration)
    .attr("d", diagonal)
    .each("end",function(e) {
        if(e.target.id == current)
            show_tooltip(e.target)
    });

这当前在动画结束时为每个元素调用匿名函数。我想为每一帧调用它。

4

2 回答 2

4

您可以注册一个自定义补间,该补间返回您想要在每个滴答时调用的函数。

link.transition()
  .duration(duration)
  .attr("d", diagonal)
  .tween("side-effects", function() {
    return function() {
      console.log(d3.select(this), "tick");
    }
  });
于 2014-01-14T10:57:41.703 回答
1

根据https://github.com/mbostock/d3/wiki/Transitions#timers上的 D3 文档

定时器队列会回调requestAnimationFrame

您应该能够使用它来实现您的转换。

于 2014-01-14T11:17:37.523 回答