D3平移事件干扰鼠标按下事件

时间:2019-01-09 13:33:48

标签: javascript d3.js

以下问题: 我正在做一个绘图应用程序,用户可以在其中绘制元素并缩放和平移。 在瞬间,工程图使用右键单击按钮,并通过单击鼠标左键进行平移。
现在,我想将绘图更改为左键单击,然后将其平移到右侧。
默认情况下,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的鼠标按下永远不会触发,因为右键单击和鼠标左键都可以平移

如何解决这个问题?

0 个答案:

没有答案