2014-07-13 6 views
1

Je crée un groupe simple, avec un cercle et du texte, et je m'attendais à ce que le texte soit centré sur le cercle. (Comme dans la démo du groupe sur la première page de fabricjs.com!)membres du groupe ne se concentrant pas dans le groupe

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); 

J'ai en fait pris que depuis le début de la page tutoriel sur les groupes, mais retiré scaleY du cercle pour faire le non centrage plus évident. J'ai un JSFiddle, et en traçant le code Fabric, je ne vois rien qui puisse centrer le contenu; Group.prototype._updateObjectCoords juste des offsets par la position du groupe, ce qui rend le contenu top et left simplement être relatif à la partie supérieure gauche du groupe lui-même. Et pourtant, il semble fonctionner sur la page de démonstration!

http://jsfiddle.net/xGtvj/

Répondre

2

A partir de 1.4.0 fabric.js changed default object origin to 'left'and 'top'. Au lieu de cela vous avez besoin objet propriété originX et originY à être center:

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

Voici votre violon modifié: http://jsfiddle.net/KSGL8/

Vous pouvez également revenir dans le monde précédent comportement 1.4.0 avec ces deux lignes:

// 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

Merci! Je continue de me faire mordre par les changements de 1.4.0 contre plus tard, et il semble que les docs ne suivent pas non plus. : -/ – shaver

+0

J'ai mis à jour les docs fabricjs.com pour refléter le nouveau comportement de centrage juste maintenant. – shaver

Questions connexes