考虑任何 d3 力导向动画,例如:
http://bl.ocks.org/mbostock/1062288
加载该图并让节点稳定下来,这样它们就不会移动。将鼠标悬停在橙色节点上并让鼠标保持静止。单击并执行其他操作。您将看到所有节点向内移动一点,然后扩展回到正常状态。
我不喜欢这种不必要的动作,我需要将其删除。
我相信这与图表“重新加热”有关(参见https://github.com/mbostock/d3/wiki/Force-Layout ),它将 alpha 参数设置为 0.1。具体来说,我发现不必要的移动在以下任何操作之后立即发生。
force.drag()
叫做。到底是什么导致了这种“不必要的运动”,我该如何禁用它?(不禁用节点拖动)
通常,当force.resume()
触发时,alpha 值会从 0 跳到 0.1。通过更缓慢地放松阿尔法,我们可以掩盖“不必要的运动”。
我仍然对其他想法和解决方案持开放态度。
旧功能:
force.resume = function() {
return force.alpha(.1);
};
Run Code Online (Sandbox Code Playgroud)
替换功能:
force.resume = function() {
var alpha = force.alpha()
if( alpha < 0.005 ){ alpha = 0.0055 }
else if( alpha < 0.11 ){ alpha += 0.0006 }
return force.alpha(alpha);
};
Run Code Online (Sandbox Code Playgroud)