Javascript d3.layout.force初始化后,如何设置d3.layout.force.charge?

Javascript d3.layout.force初始化后,如何设置d3.layout.force.charge?,javascript,d3.js,force-layout,Javascript,D3.js,Force Layout,我想做的是点击,改变电荷,让节点被更大的力排斥,但这不起作用: 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

我想做的是点击,改变电荷,让节点被更大的力排斥,但这不起作用:

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);
});

您所要做的就是调用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);
});

没多久你就明白了。请注意,从技术上讲,您应该调用
force.restart()
。没有force.restart()方法,但如果您指的是force.resume(),这并不能解决我的问题。不错,应该是
.resume()
。好吧,如果这在这种情况下不起作用。。。