Javascript 为什么';这个简单的例子不管用吗?

Javascript 为什么';这个简单的例子不管用吗?,javascript,d3.js,Javascript,D3.js,我想了解阿特特温。我知道做这个正方形移动的简单方法就是使用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",20

我想了解阿特特温。我知道做这个正方形移动的简单方法就是使用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))
下面是一个示例的livecoding链接:

来自:“tween的返回值[emphasis added]必须是一个插值器:一个函数…”

这里有一个方法,带有内联函数


这是另一种方法,它的函数在链式之外


假设
d
只是一个数字,您是否会返回
d3。将(a,d)
插值到tween到该新值?
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);
}