我希望有一个处理每个过渡部分的函数,并且能够使用.call
链接它:
it
.attr //state 1
.transition()
.duration(1000)
.attr //state 2
到
function move(it){
return it.transition().duration(1000)
}
it
.attr //state 1
.transition()
.call move
.attr //state 2
我希望在一个函数中聚合所有转换,并使其成为条件转换。示例如下:
var w = 960;
var h = 500;
var svg = d3.select("body")
.append("svg")
.attr("width", w)
.attr("height", h);
var animation = true;
function runAnimation(it){ // this doesn't work, it will just skip the animation
if(animation){
return it.transition()
.duration(1000);
}
else{
return it;
}
}
svg.append("circle")
.attr("cx", w / 2)
.attr("cy", h / 2)
.attr("r", 2)
.call(runAnimation)
.attr("cx", 50)
我知道我可以这样做:
function runAnimation2(it, nextStep){
if(animation){
return it.transition()
.duration(1000)
.call(nextStep)
}
else{
return it;
}
}
svg.append("circle")
.attr("cx", w / 2)
.attr("cy", h / 2 + 10)
.attr("r", 2)
.attr("fill", "red")
.call(runAnimation2, function(it){ it.attr("cx", 50)})
然而我觉得它打破了“流动”。
答案 0 :(得分:0)