我正在使用 d3.js。但我无法理解force.tick如何执行(即隐式或显式)。请尝试给出start、tick、end的执行顺序。 这些事件的用途和影响是什么? 当我使用这样的东西时:
force.start();
for (var i = 0; i < n; ++i) force.tick();
force.stop();
它如何生成静态图像?
P.S:这是我第一次提出问题。如有违反请告知。
程序示例:
var k=0;
force.on("tick",tick);
force.start();//now tick will execute until the alpha lowers to the threshold value
function tick()
{
k++;
}
“k”的最终值取决于 alpha 大于阈值的时间。
现在假设,
var k=0;
force.on("tick",tick);
force.start();//now tick will execute until the alpha lowers to the threshold value
for(var i=0;i<100;i++)
force.tick();
force.stop();
function tick()
{
k++;
}
现在我得到“k”的值为“100”
在第一种情况下,tick() 被隐式调用,但现在当显式调用它时,执行顺序如何更改。
最佳答案
力布局的工作原理如下:
.start()
开始模拟。在调用之前,不会发生任何事情。.tick()
将模拟推进一个时间步长。也就是说,计算节点上的力并根据这些力计算节点的位置。.stop()
停止模拟。调用后什么也没有发生。
您发布的代码生成静态布局的方式是模拟运行多个时间步长 (n
),然后停止。通常,.stop()
不会被显式调用,因此模拟永远不会真正停止,只是进入一个不再有节点移动的平衡状态。
回顾一下——模拟开始,运行n
步然后停止。所有这些都发生在页面呈现之前,因此您看不到任何移动。如果将 n
增加到一个非常大的值,您应该会注意到页面呈现之前存在延迟。
关于d3.js - D3JS强制布局启动的执行顺序,勾选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21748520/