Javascript 强制布局内部强制布局:如何拖动内部节点
我正在开发一个应用程序,在大圆圈上有一个强制布局。对于该力布局中的每个节点,我在较小的圆上附加另一个力布局,这些圆显示在较大的圆()内 js的force布局允许用鼠标拖动节点。然而,尽管由于内力布局,较小的内圈相对于较大的外圈移动,但我无法以任何看起来独立于较大的圆圈的方式拖动内圈。也就是说,拖动内圈与拖动外圈完全相同。(设置附加到外部节点的数据的Javascript 强制布局内部强制布局:如何拖动内部节点,javascript,svg,d3.js,Javascript,Svg,D3.js,我正在开发一个应用程序,在大圆圈上有一个强制布局。对于该力布局中的每个节点,我在较小的圆上附加另一个力布局,这些圆显示在较大的圆()内 js的force布局允许用鼠标拖动节点。然而,尽管由于内力布局,较小的内圈相对于较大的外圈移动,但我无法以任何看起来独立于较大的圆圈的方式拖动内圈。也就是说,拖动内圈与拖动外圈完全相同。(设置附加到外部节点的数据的fixed属性没有帮助——如中所示。) 可以允许在较大的圆内拖动内圆吗?允许将内圈独立于外圈拖动(甚至超过其边缘)也是非常可以接受的行为,尽管这并不理
fixed
属性没有帮助——如中所示。)
可以允许在较大的圆内拖动内圆吗?允许将内圈独立于外圈拖动(甚至超过其边缘)也是非常可以接受的行为,尽管这并不理想。拖动内圈时,也会将
拖动事件发送到外部节点(因为它们重叠)。为了防止这种情况发生,您需要使用d3.event.stopPropagation()
作为拖动工具
var innerAnodes = aNode.selectAll("g.inner")
.data(innerAdata, function (d) {return d.id;})
.enter()
.append("g")
.attr("class", "inner")
.attr("id", function (d) {return d.id;})
.call(innerAlayout.drag()
.on("dragstart", function(){
d3.event.sourceEvent.stopPropagation();
})
);
这是你的名片。哇。谢谢我不知道您可以直接在上拖动,将链接在上,也不知道如何使用停止播放。我不知道sourceEvent
,等等。鼠标操作对我来说仍然是一个模糊的领域。