我正在尝试了解attrTween。我知道使这个方形移动的简单方法就是使用attr,但这个例子的目的是让我理解attrTween。以下示例没有做任何事情,但控制台中也没有出现js错误,所以我不确定我哪里出错了。
var svg = d3.select("svg")
var pi = Math.PI;
var mySquare=svg.append("rect")
.attr("x",60)
.attr("y",60)
.attr("width",200)
.attr("height",200);
mySquare.transition()
.duration(2000)
.attrTween("x", d3.interpolate(60,400))
以下是该示例的实时编码链接:http://livecoding.io/5037197
答案 0 :(得分:13)
来自API:补间的返回值 [强调添加]必须是插值器:函数...“
这是一种带内联函数的方法。
mySquare.transition()
.duration(2000)
.delay(500)
.attrTween("x", function (d, i, a) {
console.log(a); // returns 60, the value of "x" at the start
return d3.interpolate(a, 400);
});
这是另一种方法,其功能在链接之外。
mySquare.transition()
.duration(2000)
.delay(500)
.attrTween("x", myTweenFunction );
function myTweenFunction(d, i, a) {
console.log( a ); // returns 60, the current value (value at start)
return d3.interpolate(a, 400);
}