2013-11-28 82 views
2

我正在使用Fabric.js創建繪圖畫布。我是否可以知道是否有獲得組對象中屬性值的對象?Fabric.js:如何獲取組中對象的屬性值?

例如: 我創建了一個矩形和一個文本對象,並組合在一起

new fabric.group([rect1,text1],{ 
     top:100, 
     left:100 
    }); 

我試圖象下面這樣:

var objsInCanvas = canvas.getObjects(); 
for (obj in objsInCanvas) { 
    return objsInCanvas[obj].get('text') 
} 

但是它沒有得到的值我的文字。有人可以就此提出建議嗎?

回答

7

我還沒有足夠的代表評論,但我可以看到一些可能導致此問題的事情。沒有更多的代碼,我將不得不承擔一些事情。

首先,當實例化一個新組時,您需要大寫Fabric對象。

var group = new fabric.Group([rect1, text1],{ 
    ...  
}); 

其次,如果你還沒有,你需要將組添加到畫布

canvas.add(group); 

我敢肯定你會在你的代碼,但誒。然後我們可以得到好東西......

你的for循環抓取畫布上的所有對象,對吧?事實證明,如果你的對象是在一個組中,那麼你正在抓住該組本身,而不是其中的單個對象。您還需要遍歷該組中的所有對象以獲取它們的任何屬性。

我做了一個快速小提琴只是爲了看看我能否得到它的工作。它應該讓你知道你需要做什麼。

http://jsfiddle.net/pUw5k/

+0

感謝您的小提琴細節的例子! – PaulLing

+0

小提琴是一個驚人的幫助! –

3

您可以在一組通過項目訪問單個對象()方法:

例如:

group.item(0).set({ 
    text: 'trololo', 
    fill: 'white' 
}); //Retrieve item(0) and sets its properties 

group.item(1).setFill('red'); ////Retrieve item(1) and sets its properties