一旦d3.layout.force已初始化,如何设置d3.layout.force.charge?

时间:2014-03-01 23:15:22

标签: javascript d3.js force-layout

我想要做的是onClick,更改费用以便节点被更高的力量击退,但这不起作用:

var force = d3.layout.force()
    .gravity(.05)
    .charge(function(d, i) { return i ? 0 : -2000; })
    .nodes(nodes)
    .size([w, h]);

svg.on("click", function() {
  force = force.charge(function(d, i) { return i ? 0 : -10000; })
  window.setTimeout(function() {
  force = force.charge(function(d, i) { return i ? 0 : -2000; })
  },3000);
});

1 个答案:

答案 0 :(得分:1)

你所要做的就是调用force.start,它再次遍历声明的节点并更改它们上的费用和其他属性。

svg.on("click", function() {
  force = force.charge(function(d, i) { return i ? 0 : -50000; })
  force.start()
  window.setTimeout(function() {
  force = force.charge(function(d, i) { return i ? 0 : -2000; })
  force.start()
  },3000);
});