我们可以克隆像 MS Word 这样的对象吗,ctrl + 鼠标单击 + 拖动

Can we clone objects like MS Word , ctrl + mouse click + drag

在我的 fabricjs 应用程序上,我在一个对象上单击 ctrl + 鼠标左键单击,然后克隆它,到目前为止一切顺利。 关键是我想像在MS WORD中一样进行克隆,即ctrl + click + drag。

以前有人做过类似的事情吗? 谢谢,这对我的项目非常重要。

我的职能是:

**here i make true the flag**


 fabric.Canvas.prototype.__onMouseDown = function (e) {    
              //left click is pressed
              lpressed = true;
    }

   **if the user prsees ctrl + left mouse + move , i create a new object**
      $(document).mousemove(function(e){
          console.log('mouse move');
          if(e.ctrlKey && lpressed){
              if(canvas.getActiveObject()){
                  var actObj = canvas.getActiveObject();
                  var toBack = true;
                  addCirlceTable(canvas.getActiveObject().left,canvas.getActiveObject().top,8,45,toBack);

                  canvas.renderAll();
                  //i select the original object which it comes on the foreground, over the new object
                  canvas.fire('object:selected', {target:actObj, e:e});
                  actObj.fire('selected',{e:e});
              }
          }
      });

//here i disable the flag
canvas.on('mouse:up', function(o){
      lpressed = false;
}

所以,代码的流程是这样的:
1. select一个对象
2. 调用一个我新建的函数
3.我把新对象放在背景上(在原来的下面)
4.我手动重新select原来的对象
5.我需要移动原来的对象!

第 5 步不起作用,我必须释放左键单击然后重新单击原始对象(尽管它是 selected),以便移动原始对象.

是的,你是对的,他们没问题,克隆过程如我所愿,ctrl + 鼠标拖动。 我只是更改了移动功能,而不是一般的 dom 事件 $(document).mousemove(function(e){})

我使用织物移动事件:canvas.on('object:moving',function(e){});