我有一个节点和链接的网络。其中一个在中心位置固定,但可拖动,其他位于中心位置的力场中。如果用户拖拽任何节点,其他人将被拖拽在他身后,因为它们是链接的。是否有可能将其他节点拖动到居中节点上,但是保持其他节点的拖动事件是单一的?育儿D3.js节点拖动
感谢思考, 大卫
编辑:如果有人知道的可能性来设置dragg侦听所有其他节点的中心之一,这个问题就迎刃而解了。如果您有想法,我会很感激! 请留下我评论哪些部分的ecode可以帮助你解决这个问题,我会尽快发布!
编辑:在nrabinowitz的帮助下,我现在可以像我想要的那样移动节点!但是新的代码部分以某种方式崩溃了我的坐标限制。为了节点不会退出svg,我把一个cx/cy-attr放到所有节点上,防止它们穿过svg的边界。这在一开始仍然有效,但是在中心节点(因此是'g'元素)的第一次拖拽之后,这些限制似乎发生了变化。有没有什么东西拖动除了SVG?
脚本提供限制的部分是
force.on("tick", function() {
node.attr("cx", function(d) { return d.x = Math.max(15, Math.min(width - 15, d.x)); })
.attr("cy", function(d) { return d.y = Math.max(15, Math.min(height - 15, d.y)); });
node.attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; });
link.attr("x1", function(d) { return d.source.x; })
.attr("y1", function(d) { return d.source.y; })
.attr("x2", function(d) { return d.target.x; })
.attr("y2", function(d) { return d.target.y; });
});
你的意思是拖拽非连接节点吗?或者一次拖拽连接的节点,而不是根据强制?你可以包含一些示例代码,或链接到JSFiddle? – nrabinowitz
他们都在一个网络连接。更像是将任何节点单独移动它,让中央节点拖动整个网络,就好像网络本身是带有拖曳事件的对象一样! – David
是否有可能在网络周围放置第二个svg或某种容器元素,以响应中央节点的拖动事件? – David