繁体   English   中英

如何使用鼠标中键禁用拖动选择?

[英]How to disable drag selection with middle mouse button?

转到kitchensink ,使用鼠标中键,尝试在画布的空白区域单击并按住鼠标,然后移动鼠标。

显示选择矩形。 如何禁用它? 我问是因为,我有鼠标中键单击并拖动到早期版本的Fabric中的画布平移。 升级到新版本后,画布的行为异常。


我试图通过执行canvas.selectable = false;来禁用event.button == 1在鼠标按下时在画布上的选择canvas.selectable = false; 在mousedown中,并在mouseup事件处理程序中将其设置为true。

那没用。

有什么想法如何使用鼠标中键单击和拖动来禁用选择?

问题是最近启用的结构单击其他按钮而不是单击左键。 关键是要处理左边,要处理右边,不能处理中间...我猜中间按钮遵循左按钮的流程是因为它不是右按钮。

这里是Fabric的mousedown处理函数的摘录,版本为1.7.3(当前为2017年2月)。

 __onMouseDown: function (e) {

      var target = this.findTarget(e);

  // if right click just fire events
  var isRightClick  = 'which' in e ? e.which === 3 : e.button === 2;
  if (isRightClick) {
    if (this.fireRightClick) {
      this._handleEvent(e, 'down', target ? target : null);
    }
    return;
  }

  ... continue normal flow ...

因此,这需要适当的修复。

按照建议发布自定义事件是一个补丁,但是通常这根本不会发生。 (因为该项目的ima管理员即时通讯将对此进行修复)

Prasanth,您的问题很简单。 你有错字。 尝试像这样使用:

canvas.selection = false;

这是您可以尝试的代码:

canvas.on('mouse:down',function(e){
    canvas.selection = true;
});
canvas.on('mouse:down',function(e){
  if( e.e.button == 1 ) {
    canvas.selection = false;
  };
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM