我最近正在使用d3.js制作网络拓扑
它具有平移和缩放,对象拖动,线条绘制功能。
我现在已经实现了所有功能,但是有问题。
当我在主svg上画线时,画得很好。
但是,如果我要开始在对象(矩形或某些图像)上绘制,则无法正常工作。
因为对象拖动功能吞下了“ mousedown”事件。
[Main svg]
mainSvg
.on('mousedown', function mouseDown() {
// make object(line)
})
.on('mousemove', function mouseMove() {
// drawing line
// update line's x2, y2 coordinates
})
.on('mouseup', () => {
// drawing end
});
[Object]
.call(d3.drag()
.on('start', function dragStart() {
// make active state
})
.on('drag', function dragging(d) {
// update object's x,y coordinates
})
因此,如果我打开“绘图”模式,是否可以将“ mousedown”事件发送到主svg?
在绘制模式期间,我要绘制线条而没有任何中断。(例如MS“ PowerPoint”)
是否有解决方案,或者我需要更改事件处理?
感谢您阅读我的问题。
答案 0 :(得分:0)
我解决了自己。
我的解决方法是
d3.selectAll('objects').style('pointer-events', 'none);
在绘图模式下,我关闭了所有可单击的对象。