使用ArcTween时更改D3弧的内半径

时间:2016-03-23 04:44:23

标签: javascript d3.js

我尝试使用D3为饼图设置动画,意味着将起始角度设置为0到某个X角度。我有以下代码:

var path = svg.append("g").selectAll("path").data(pie([0, 0]))
  .enter()
  .append("path")
  .attr("fill", function(d, i) { return "#314965" })
  .attr("d", arc.endAngle(colorCounter == 0 ? 2 * Math.PI : 0.5))
path = d3.select(path[0][0]);

setInterval(function() {
  path.transition()
      .duration(750)
      .call(arcTween, Math.random() * 0.314);
}, 1500);


//Animation tween function
function arcTween(transition, newAngle) {
  transition.attrTween("d", function(d) {
    var interpolate = d3.interpolate(d.endAngle, newAngle);
    return function(t) {
      d.endAngle = interpolate(t);
      return arc(d);
    };
  });
}

这样可以很好地制作动画,但是,动画的弧线与原始弧线没有相同的内半径或外半径。我怀疑问题是当我返回arc(d)时,半径被重置为默认值。如果是这种情况,我不确定如何设置它们。请帮忙!谢谢。

0 个答案:

没有答案