【问题标题】:Disable group selection in Fabric.js在 Fabric.js 中禁用组选择
【发布时间】:2014-03-05 00:21:17
【问题描述】:

如何在 Fabric.js 中禁用组选择并让单个对象一次可选择一个?对于组选择,我的意思是使用例如选择多个对象。 SHIFT+点击。

【问题讨论】:

    标签: javascript fabricjs


    【解决方案1】:

    你可以很容易地做到这一点

      canvas.selection = false; // disable group selection
    

    如果你想在单个对象上使用它

      rect.set('selectable', false); // make object unselectable
    

    【讨论】:

    • 让这个单个对象可选择? AFAIK 这会禁用所有选择。
    • @Timo:不,当您按住鼠标左键然后移动鼠标时,这会禁用选择。您将看到没有任何反应,即选择框不可见。
    • 在 Fabric JS 版本 4 上,当用户使用 SHIFT+Click 时,这不会禁用多个对象的选择。
    【解决方案2】:

    通过选择侦听器画布方法禁用组选择(我认为最好的方法)

    canvas.on('selection:created', (e) => {
      if(e.target.type === 'activeSelection') {
        canvas.discardActiveObject();
      } else {
        //do nothing
      }
    })
    

    【讨论】:

    • 为什么这比canvas.selection = false好?
    • 在整个应用程序的交互过程中,您不必在整个画布上打开或关闭画布选择之间跳转。这可能取决于您正在与之交互的对象。我发现它更有针对性。
    【解决方案3】:

    @CQ Smooth 的回答接近我的要求,谢谢。但是我需要在您先选择一个对象时触发该事件,然后通过 shift+click 添加另一个:

      canvas.on({
          'selection:updated': e => {
            const activeSelection = e.target
            if (activeSelection) {
               canvas.discardActiveObject();
            }
          }
      })
    

    您可以在以下位置查看解决方案:https://app.collagemaker.uk/create

    【讨论】:

      猜你喜欢
      • 2012-01-13
      • 2012-11-16
      • 2021-03-12
      • 2017-04-26
      • 2013-11-25
      • 2013-12-18
      • 2022-01-24
      • 2013-09-02
      • 1970-01-01
      相关资源
      最近更新 更多