Comment puis-je étendre des composants tels que des boutons pour utiliser les valeurs x et y comme centre du composant, pas le coin supérieur gauche?flex 3 composants utilisant x y comme centre, pas de topleft
Répondre
C'est assez facile dans Flex 4 :). Ils ont une méthode transformAround
dans UIComponent, qui vous permet de transformer la position/échelle/rotation d'un composant autour de n'importe quel pivot arbitraire. Donc, vous pouvez le faire:
override public function set x(value:Number):void { var pivot:Vector3D = new Vector3D(this.width/2, this.height/2, 0); var translation:Vector3D = new Vector3D(value, this.y, this.z); transformAround(pivot, null /* scale vector */, null /* rotation vector */, translation); }
Vous pouvez personnaliser/optimiser, mais c'est le jist :).
Si vous utilisez Flex 3, je verrais comment ils ont fait cela. C'est assez hardcore, beaucoup de choses Matrix/Matrix3D.
Eh bien, vous pouvez écrire une fonction de traducteur qui prend le contrôle, x et y, et rend le centre Point
Xc = (Control.x + (Control.width/2))
Yc = (Control.y + (Control.height/2))
return new Point(Xc,Yc)
Ensuite, il suffit d'utiliser votre traducteur pour régler le moment de la position que vous utiliser autrement x et y.
oui, c'est une possibilité mais je cherche à faire des composants personnalisés et je ne vois pas comment cela pourrait tenir dans le processus de position d'un UIComponent (aurait dû poser une question plus claire). –
oui en utilisant flex3, mais pas pour longtemps, donc votre option est bonne, merci. –