javascript - 无法从具有树布局的力图调用 force.tick()

  显示原文与译文双语对照的内容
0 0

我有一个基于强力可以调的例子,我想加快或者跳过初始节点移动,以便尽快平衡。

按照这个回答的提示,从我的代码中调用 tick(),但是它不能在 force-collabsable例子中工作,因为force对象上没有记号或者alpha方法。

我的代码在修改后看起来像这样,我删除了 on tick并在末尾添加了 force.tick() 调用:


var force = d3.layout.force()//line 38 in the example
//.on("tick", tick)//commented out as I call tick instead
. charge(function(d) { return d._children? -d.size/100 : -30; })
. linkDistance(function(d) { return d.target._children? 80 : 30; })
. size([w, h - 160]);

function update() {//line 56 in the example
 var nodes = flatten(root),
 links = d3.layout.tree().links(nodes);

 force//line 60 in the example
. nodes(nodes)
. links(links)
. start();

 force.tick()//added by me to cause a tick and the point of error

但调用失败,并显示未捕获的TypeError: 未定义的函数不是函数,因为该方法不存在。

当我将force对象称为( 从 Chrome 调试器获取) 时,该对象具有以下值:

charge: function (x) { distance: function (x) { drag: function () { friction: function (x) { gravity: function (x) { linkDistance: function (x) { linkStrength: function (x) { links: function (x) { nodes: function (x) { on: function (type, listener) { resume: function () { size: function (x) { start: function () { stop: function () { theta: function (x) { proto: Object

为什么本示例中的力对象与其他不使用树布局的强制布局示例不同? 如何直接调用 tick()?

时间: 原作者:

0 0

我发现如果移除referecnes到 d3.geom.js 和 d3.layout.js,我可以调用 tick(),而没有没有这些文件的负面影响。

原作者:
...