【问题标题】:How to disable drag selection with middle mouse button?如何使用鼠标中键禁用拖动选择?
【发布时间】:2017-06-26 03:16:31
【问题描述】:

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

显示选择矩形。如何禁用此功能?我问是因为,我有鼠标中键单击并拖动绑定到先前版本的织物中的画布平移。升级到新版本后,画布的行为异常。


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

那没用。

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

【问题讨论】:

    标签: javascript fabricjs


    【解决方案1】:

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

    这里是 1.7.3 版(当前为 2017 年 2 月)的 fabric 的 mousedown 处理函数的 sn-p。

     __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 ...
    

    所以这需要适当的修复。

    按照建议发布自定义事件是一个补丁,但通常这根本不应该发生。 (因为我是这个项目的维护者,我要解决这个问题)

    【讨论】:

      【解决方案2】:

      普拉桑斯,你的问题很简单。你有错字。尝试这样使用:

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

      【讨论】:

      • 哦!我想,我被旧文件误导了。非常感谢,很好的观察:)
      猜你喜欢
      • 2017-12-27
      • 1970-01-01
      • 1970-01-01
      • 2022-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多