如何判断D3力布局何时停止

How to tell when a D3 force layout has stopped

本文关键字:布局 何时停 D3 何判断 判断      更新时间:2023-09-26

我使用D3的力布局来组织网络图,一切都很顺利。

然而,我想在我的UI中添加一个按钮,这样用户就可以随意播放/暂停布局过程:我想要一个反映布局当前状态的切换按钮:无论是否在计算(当布局稳定时,d3将自动停止计算)。有没有一种方法可以判断部队布局计算何时完成和开始?我本以为会有某种事件来处理这个问题,但找不到。

使用wiki上记录的end事件。

d3.layout.force()
   .on('end', function() { console.log('ended!'); });

jsFiddle:http://jsfiddle.net/zschuessler/gRqv3/|查看控制台以查看正在运行的侦听器。

实际上并没有"停止"计算布局的概念。即使它看起来是静止的,也可能有微小的变化。您可以做的是检查alpha的值,如果它低于阈值,则将其解释为已停止。在这种情况下,可以将其设置为负值,从而显式停止布局。对此没有特定的事件,但您可以在tick事件处理程序中检查您的条件。