2014-07-13 72 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