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()
。好吧,如果这在这种情况下不起作用。。。