我正在使用D3的强制布局来组织一个网络图,并且一切正常。如何判断D3强制布局何时停止
但是,我想向我的用户界面添加一个按钮,以便用户可以随意播放/暂停布局过程:我想要一个反映当前布局状态的切换按钮:是否正在计算或者没有(当布局稳定时,d3自动停止计算)。有什么方法可以说明强制布局计算何时完成并开始?我期望某种事件来处理这个事件,但是找不到一个事件。
我正在使用D3的强制布局来组织一个网络图,并且一切正常。如何判断D3强制布局何时停止
但是,我想向我的用户界面添加一个按钮,以便用户可以随意播放/暂停布局过程:我想要一个反映当前布局状态的切换按钮:是否正在计算或者没有(当布局稳定时,d3自动停止计算)。有什么方法可以说明强制布局计算何时完成并开始?我期望某种事件来处理这个事件,但是找不到一个事件。
实际上并没有“停止”计算布局的概念。即使它看起来像静止不动,仍然可能有微小的变化。您可以执行的操作是检查alpha
的值,如果它低于阈值,则将其解释为停止。在这种情况下,您可以将其设置为负值,从而明确停止布局。没有特定的事件,但您可以在tick
事件处理程序中检查您的条件。
使用记录在wiki上的end
事件。
d3.layout.force()
.on('end', function() { console.log('ended!'); });
jsFiddle:http://jsfiddle.net/zschuessler/gRqv3/ |查看控制台以查看操作中的听众。
嗨,拉尔斯。 'end'事件监听器自v2.8.0以来一直可用。 (rel 2012年2月24日)。 jsFiddle:http://jsfiddle.net/zschuessler/gRqv3/ –
好抓!检查alpha也可能更安全,因为它需要很长时间才能实际为零。 –