【发布时间】:2015-12-06 04:27:20
【问题描述】:
我想为 SVG 中仅扩展外半径的所有路径元素添加过渡。我正在尝试为我制作的所有这些迷你弧线创造一种不断增长的效果。
制作完所有弧线后,我只希望为所有弧线扩展外半径。因此,例如,我希望所有圆弧路径的外半径扩大 5,但我希望它们保留所有其他属性。我尝试更改 outerRadius 属性,然后再次调用 arc,但这会重置所有其他属性,例如开始和结束角度。 这是我的代码笔: http://codepen.io/nsohail92/pen/obNRvv
var width = 1200;
var height = 1200;
var innerRadius = height/2.5;
var outerRadius = height/2;
var count = 0;
var startAngle = 0;
var increment = (360/16) / 100; //.025
var endAngle;
var drawArc = d3.svg.arc();
var vis = d3.select("body").append("svg");
var svg = vis.attr("width", width).attr("height", height);
function createArc() {
endAngle = startAngle + increment;
drawArc
.innerRadius(innerRadius)
.outerRadius(outerRadius)
.startAngle(startAngle)
.endAngle(endAngle);
svg.append("path")
.attr("d", drawArc)
.attr("fill", "#81ecb5")
.attr("transform", "translate(600,600)");
if(endAngle < 5) {
count = count + 1;
startAngle = endAngle + .02;
}
else {
var pathArray = svg.selectAll("path");
console.log(pathArray);
drawArc.outerRadius(550);
svg.select("path#path_0").transition().duration(1500).attr("d", drawArc);
return;
}
createArc();
}
createArc();
【问题讨论】:
-
所以你是说在绘制时完全增加饼图的外半径?
-
有很多例子说明如何做到这一点。那些不适合你怎么办?
-
@LarsKotthoff 有一些关于如何用新半径覆盖圆弧对象的示例,但我不想这样做,因为我的 for 循环中的每个拱门都有不同的角度值。有 arcTween 的例子,但我不知道如何使用它。
-
我不清楚你要做什么——你为什么不使用饼图布局?
标签: javascript d3.js svg