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

时间:2017-02-08 13:16:28

标签: javascript fabricjs

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

显示选择矩形。如何禁用此功能?我问,因为我有鼠标中键点击并拖动绑定到早期版本的面料中的画布平底锅。升级到新版本时,画布的行为方式出乎意料。

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

那不起作用。

如何使用鼠标中键单击并拖动来禁用选择?

2 个答案:

答案 0 :(得分:3)

问题是面料最近启用了点击其他按钮而不是左键。 关键是左边是处理,右边是处理,中间不是...... 我猜中间按钮跟随左按钮的流程,因为它不是正确的按钮。

这里是一个来自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 ...

所以这需要适当的修复。

根据建议发布自定义事件是一个补丁,但通常这根本不会发生。 (因为我是该项目的mantainer,我将解决这个问题)

答案 1 :(得分:1)

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;
  };
});