2013-05-18 35 views
2

我試過了最新的1.1.13版本的fabricjs,它們都不能在選定的對象上應用clipTo函數。如果只有一個對象,並且需要剪切它,那麼可以,但是當有更多的對象並試圖剪切所選對象時,所有其他對象也會被剪裁。最奇怪的行爲是,在選擇其他對象之前,剪輯將應用於所選對象,但在選擇了其他對象並嘗試剪輯之後,所有已剪輯的對象也會受到影響。 我想要使用以下步驟清除問題。Fabricjs - 如何只剪輯選定的對象?

  1. 有兩個對象,object1和object2。
  2. 我選擇了object1並在其上應用了clipTo函數。
  3. 相應地裁剪object1,並且其他未選定的object2不受影響。高興在這裏沒關係。
  4. 現在我選擇object2並在其上應用clipTo函數。但是此時clipTo函數也會影響未被選中的object1。

請記住,我使用clipTo函數動態地,而不是在對象初始化期間使用以下函數。

var obj = canvas.getActiveObject(); 
var roundness = dynamicValue; // get using jquery sliders 
if(obj) 
    obj.clipTo = function(ctx) { 
      ctx.arc(0, 0, roundness, 0, Math.PI * 2, true); 
    } 
canvas.renderAll(); 

如何解決此問題,請幫助。

+1

小撥弄完整的代碼可能有助於發現問題 – arty

+0

並刪除從第一個對象'clipTo'? – kangax

回答

2

保存最後一個activeObject並刪除clipTo if activeObject!== lastActive。

var obj = canvas.getActiveObject(); 

    if (!obj) return; 

    if (lastActive && lastActive !== obj) { 
     lastActive.clipTo = null; 
    } 

    var roundness = Math.round(Math.random() * 60, 2) 
    obj.clipTo = function (ctx) { 
     ctx.arc(0, 0, roundness, 0, Math.PI * 2, true); 
    } 
    lastActive = obj; 
    canvas.renderAll(); 

看吧: http://jsfiddle.net/Kienz/qfgfj/

+0

謝謝你的例子幫助我解決我的問題 – anam

+0

http://jsfiddle.net/qfgfj/5/繪製形狀()我已經作出調用選擇的變化來繪製不同的形狀,這是工作的所有形狀,除了矩形即5選項。你能說PLZ爲什麼不和變量一起工作。 – anam

+0

我通過解析數值來解決這個問題。 obj.setHeight()需要編號 – anam