2015-04-22 43 views
0

我點擊ctrl +鼠標左鍵單擊,在一個對象上,我克隆它,到目前爲止這麼好。 問題是我想要像MS WORD那樣做克隆,它是ctrl + click + drag。我們可以在我的fabricjs應用程序中克隆對象,如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.我需要移動原始對象!

第5步不起作用,我必須釋放左鍵單擊,然後重新單擊原始(儘管它被選中),以移動原始對象。

+0

貌似正確的策略。你只需要獲得mousedown/mouseup事件處理權限。 –

回答

0

是的,你是對的,他們沒問題,克隆過程就像我想要的一樣,按Ctrl +鼠標拖動。 我只是改變了移動功能,而不是一般的DOM事件$(document).mousemove(function(e){})

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

相關問題