IU正在将一个圆圈展开成一行,而我正在这样做的方式(也为其他函数打开)是循环遍历每个状态并调用.transition()…
,如下所示:
function all() {
for(i=0; i<numberOfPoints; i++){
circle.data([circleStates[i]])
.transition()
.delay(dur*i)
.duration(dur)
.ease("linear")
.attr('d', pathFunction)
.each('end', firstAFterUnroll()); //is this the correct function?
}
}
如上所述的'状态'是一个部分圆和部分线的路径,以给出该行展开的印象。
firstAfterUnroll()
在每次迭代后被调用,而不是在最后,这确实有意义,我只是不确定如何调整缓动的链接。在行展开之后(即在for循环结束执行之后),firstAfterUnroll()
应该被调用一次。
我也试过在循环之外调用它,但它在循环结束之前执行。
答案 0 :(得分:1)
鉴于您只需要调用此函数一次,并且您确切知道转换何时完成,您可以使用setTimeout
在此之后调用它。链接转换的意思恰恰相反,而不是真正调用单个函数一次。
要在此之后调用任何其他函数,只需从第一个函数调用它们即可。我用这个解决方案修改了你的jsfiddle here。
或者,您可以在this question的答案中执行某些操作,以确保仅调用该函数一次。