我正在使用d3.js.但我无法理解 force.tick如何执行(即隐式或明确地)。请尝试给出关于开始,结束和结束的执行顺序的想法。 这些活动的用途和影响是什么? 当我使用这样的东西时:
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()被隐式调用,但现在明确调用它时如何更改执行顺序。
答案 0 :(得分:4)
力布局的工作原理如下:
.start()
开始模拟。在被召唤之前,没有任何事情发生。.tick()
将模拟推进一步。也就是说,计算节点上的力,并根据这些力来计算它们的位置。.stop()
停止模拟。它被召唤后没有任何事情发生。您发布的代码生成静态布局的方式是模拟运行了多个时间步(n
)然后停止。通常,.stop()
不会被明确调用,因此模拟永远不会停止,只是进入一个没有节点移动的平衡状态。
所以回顾一下 - 开始模拟,运行n
步并停止。所有这些都在页面呈现之前发生,因此您看不到任何移动。如果将n
增加到一个非常大的值,则应该在呈现页面之前注意到滞后。