我正在尝试将强制导向图从d3 v3转换为v4。我的项目在这里:
https://bl.ocks.org/anonymous/337d113cb77c3695ac6959bebe728795
为什么节点上的双击动作不会将节点释放回法线强制布局?拖拽和引脚相关的功能直接位于节点代码下方。
答案 0 :(得分:1)
设置d.fx
和d.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.fx
和d.fy
属性设置为undefined on double单击,这样可以根据力图进行定位。
您可能会看到使用d.fixed来修复位置的原因是这是v3中使用的方法:
fixed - 一个布尔值,指示节点位置是否被锁定。