Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我们可以克隆诸如MS Word、ctrl+鼠标单击+拖动之类的对象吗_Javascript_Php_Jquery_Html5 Canvas_Fabricjs - Fatal编程技术网

Javascript 我们可以克隆诸如MS Word、ctrl+鼠标单击+拖动之类的对象吗

Javascript 我们可以克隆诸如MS Word、ctrl+鼠标单击+拖动之类的对象吗,javascript,php,jquery,html5-canvas,fabricjs,Javascript,Php,Jquery,Html5 Canvas,Fabricjs,在我的fabricjs应用程序中,我在一个对象上单击ctrl+鼠标左键,然后我克隆了它,到目前为止还不错。 关键是我想在MS WORD中进行类似的克隆,即ctrl+单击+拖动 以前有人做过这样的事吗? 谢谢,这对我的项目非常重要 我的职能是: **here i make true the flag** fabric.Canvas.prototype.__onMouseDown = function (e) { //left click is presse

在我的fabricjs应用程序中,我在一个对象上单击ctrl+鼠标左键,然后我克隆了它,到目前为止还不错。 关键是我想在MS WORD中进行类似的克隆,即ctrl+单击+拖动

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

我的职能是:

**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.选择一个对象 2.调用我创建的新函数 3.我把新的物体放在原作的背景下 4.我手动重新选择原始对象 5.我需要移动原始对象


第五步不起作用,我必须释放左键单击,然后重新单击原始对象,尽管它已被选中,以便移动原始对象。

是的,你说得对,它们都正常,克隆过程按照我的要求工作,ctrl+鼠标拖动。 我只是更改了move函数,而不是一般的dom事件$document.mousemovefunctione{}


我使用结构移动事件:canvas.on'object:moving',function{}

看起来是正确的策略。您只需要正确处理mousedown/mouseup事件。