所有转换完成后的转换函数链接

时间:2013-09-09 13:31:10

标签: javascript d3.js

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()应该被调用一次。

我也试过在循环之外调用它,但它在循环结束之前执行。

Fiddle

1 个答案:

答案 0 :(得分:1)

鉴于您只需要调用此函数一次,并且您确切知道转换何时完成,您可以使用setTimeout在此之后调用它。链接转换的意思恰恰相反,而不是真正调用单个函数一次。

要在此之后调用任何其他函数,只需从第一个函数调用它们即可。我用这个解决方案修改了你的jsfiddle here

或者,您可以在this question的答案中执行某些操作,以确保仅调用该函数一次。