【发布时间】:2014-11-05 04:19:24
【问题描述】:
我有一个简单的路径元素,必须使用 D3.js 跟随一个圆圈。我找到了一种方法,通过在 SVG 上使用 getTotalLength 和 getPointAtLength 方法,如本例所述:
http://bl.ocks.org/mbostock/1705868
它工作正常,但问题是我的圆圈从底部开始并沿着线向上,我如何更改动画中圆圈的起点,使其从上到下?这是我的代码:
我的路径元素:
<path id="testpath" style="fill:none;stroke:#FFFFFF;stroke-width:0.75;" d="M1312.193,1035.872l80.324-174.458l13.909-264.839l507.09-211.095
l8.667-248.405" />
D3 代码:
function followPath()
{
var circle = d3.select("svg").append("circle")
.attr("r", 6.5)
.attr("transform", "translate(0,0)")
.attr("class","circle");
var path = d3.select("#testpath");
function transition()
{
circle.transition()
.duration(10000)
.attrTween("transform", translateAlong(path.node()))
.each("end", transition);
}
function translateAlong(path)
{
var l = path.getTotalLength();
return function (d, i, a) {
return function (t) {
var p = path.getPointAtLength(t * l);
return "translate(" + p.x + "," + p.y + ")";
};
};
}
transition();
}
我做了一个小提琴,你可以看到它从下到上(我知道视图框很大,它是更大的 SVG 图像的一部分)
【问题讨论】: