以下问题:
我正在做一个绘图应用程序,用户可以在其中绘制元素并缩放和平移。
在瞬间,工程图使用右键单击按钮,并通过单击鼠标左键进行平移。
现在,我想将绘图更改为左键单击,然后将其平移到右侧。
默认情况下,D3左键单击平移。如果我想将左键单击更改为右键单击平移,我将执行以下过滤器:
drawSvg.call(zoomed).on("dblclick.zoom",null);
var zoomed = d3.zoom()
.scaleExtent([1, Infinity])
.translateExtent([[0,0],[width,height]])
.on("zoom", zoomed)
.filter(()=>{
if(d3.event.type === 'zoom'){
return d3.event.oncontextmenu;
}
return true;
});
现在,我可以左右单击进行平移。
如何禁用左键平移?
这是工作,但
//handles the zoom for the Map and the Grid
function zoomed() {
if(d3.event.sourceEvent.which === 1){
return false;
}
}
现在我不能再绘图
因为我有第二个相同元素的mousedown处理程序。
var polyDraw = drawSvg.on("mousedown", setPoints)
.on("mousemove", drawline)
.on("mouseup", decide);
现在,setPoints的鼠标按下永远不会触发,因为右键单击和鼠标左键都可以平移
如何解决这个问题?