2014-07-13 101 views
1

我創建了一個簡單的羣組,其中包含圓圈和文本,而且我預計文本將以圓圈爲中心。 (如在fabricjs.com的頭版組演示!)羣組成員不集中在組

var text = new fabric.Text('hello world', { 
    fontSize: 30 
}); 

var circle = new fabric.Circle({ 
    radius: 100, 
    fill: '#eef', 
}); 

var group = new fabric.Group([ circle, text ], { 
    left: 150, 
    top: 100, 
    angle: -10 
}); 

canvas.add(group); 

我其實採取了從小組教程頁面的開始,但除去圓的的scaleY使非居中更明顯。

我有一個JSFiddle它,並追蹤徹底的Fabric代碼,我沒有看到任何事實上將中心的內容; Group.prototype._updateObjectCoords剛剛抵消了組的位置,使得內容'topleft只是相對於組本身的左上角。然而,它似乎在演示頁面上工作!

http://jsfiddle.net/xGtvj/

回答

2

從1.4.0 fabric.js changed default object origin to 'left'and 'top'開始。 相反,你需要的對象屬性originXoriginYcenter

fabricObject.set({ 
    originX: "center", 
    originY: "center" 
}); 

這裏是你的提琴修改:http://jsfiddle.net/KSGL8/

您也可以在全球範圍恢復到以前的1.4.0行爲與這兩條線:

// From 1.4.0 on, Fabric.js put left/top as default, restore old center/center 
fabric.Object.prototype.originX = "center"; 
fabric.Object.prototype.originY = "center"; 
+0

謝謝!我一直對1.4.0與之後的更改感到困惑,看起來文檔也沒有跟上。 : -/ – shaver

+0

我更新了fabricjs.com文檔以反映剛纔的新對中行爲。 – shaver