2009-10-18 5 views

Répondre

2

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.

+0

oui en utilisant flex3, mais pas pour longtemps, donc votre option est bonne, merci. –

0

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.

+0

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). –

Questions connexes