d3.js双击不是释放节点

时间:2017-06-08 20:15:41

标签: javascript json d3.js

我正在尝试将强制导向图从d3 v3转换为v4。我的项目在这里:

https://bl.ocks.org/anonymous/337d113cb77c3695ac6959bebe728795

为什么节点上的双击动作不会将节点释放回法线强制布局?拖拽和引脚相关的功能直接位于节点代码下方。

1 个答案:

答案 0 :(得分:1)

设置d.fxd.fy属性后,无论d.fixed如何,节点都不会移动。您可以在此处设置这些属性:

function dragged(d) {
    d.fx = d3.event.x;
    d.fy = d3.event.y;
}

来自d3v4 API文档:

  

要将节点固定在给定位置,您可以指定另外两个节点   属性:

fx - the node’s fixed x-position
fy - the node’s fixed y-position
     

在每个刻度结束时,在施加任何力之后,一个节点   使用已定义的node.fx将node.x重置为此值并设置node.vx   为零;同样,具有已定义node.fy的节点已将node.y重置为   此值和node.vy设置为零。取消固定的节点   先前已修复,将node.fx和node.fy设置为null,或删除这些   属性。

在从你的块中分叉a demo之前我没有读过这个,但效果是一样的:我将d.fxd.fy属性设置为undefined on double单击,这样可以根据力图进行定位。

您可能会看到使用d.fixed来修复位置的原因是这是v3中使用的方法:

  

fixed - 一个布尔值,指示节点位置是否被锁定。