0

押すと D3 で 1.5 秒間色の変化が始まるボタンがあります。問題は、トランジションの実行中に誰かがボタンをもう一度押すと、アニメーションが最初からやり直すことです。これに対処する方法はありますか?アニメーションが行われていることを示す変数がある場合でも、変数はアニメーションが完了する前でも false に変更されます。それでも、変数をどこに配置すればよいかわかりません

if (animation !== "false") { ??????
d3.select("#" + element.id).transition().attr("fill", "#fffff").duration(animationDuration)
}
4

2 に答える 2

0

遷移がいつ終了したかを通知する関数をend使用して、イベントのリスナーを追加できます。eachそのハンドラーでは、遷移が発生しているかどうかを示す変数を設定するか、コメントで提案されているように、リスナーを再度有効にすることができます。詳しくはドキュメントを参照してください。

于 2013-06-07T17:24:29.760 に答える
0

前述のように、.each() と end を使用できます。サンプル構文は次のとおりです。

    element.id.transition(1500)
        .attr('fill', '#ffffff')
        .each('end',function() {   
            // event handler will start after the end of previous 
            transition       
        });
于 2018-01-06T14:59:26.320 に答える