我正在尝试使用下面的代码为力布局有向图上的链接设置动画。链接是简单的线条而不是路径。我按下按钮启动动画。样式更改(在 onTick 中)会立即发生,但问题是动画本身需要大约 10 秒才能开始。难道我做错了什么?我可以加快动画的开始吗?不得不说,一旦动画开始,动画就运行得非常好。
function animLink( d )
{
this.transition()
.delay(0)
.duration(10000)
.ease( "linear" )
.attrTween( "stroke-dashoffset", function() {
var i = d3.interpolateString( "1000", "0" );
return function(t) { return i(t); };
} )
.each( "end", function() { d3.select(this).call(animLink); } );
}
onTick = function(e)
{
if (buttonPressed)
link
.style( "stroke-dasharray", "10,10" )
.call( animLink );
}
你可以在这里看到一个jsfiddle。即使我指定 .delay(0),一开始也会有 5 秒的延迟。
与我的 2000 个节点相比,小提琴中的图表非常小。