2010-02-19 3 views
0

Supposons que j'essaie de placer une info-bulle sur le côté gauche d'un composant sur ma vue. Mise en page peut ressembler à ceci:Positionnement incorrect de l'info-bulle Flex

<mx:HBox> 

    <mx:Button id="btnBack" 
       label="Back" 
       click="btnBack_click();" /> 

    <mx:Button id="btnFirstLoadDemo" 
       label="First Load Demo" 
       click="btnFirstLoadDemo_click();" /> 

</mx:HBox> 

Je suis en utilisant le code ci-dessous pour obtenir l'emplacement pour placer l'info-bulle:

var pt:Point = new Point(btnFirstLoadDemo.x, btnFirstLoadDemo.y); 
pt = btnFirstLoadDemo.contentToGlobal(pt); 

Après le point est converti par contentToGlobal(), x est le point coordonnée est radicalement incorrecte.

Je l'ai trouvé un moyen de contourner ce en enroulant simplement le composant cible dans un autre HBox comme ceci:

<mx:HBox> 

    <wcb:Button id="btnBack" 
       label="Back" 
       click="btnBack_click();" /> 
    <mx:HBox> 
     <wcb:Button id="btnFirstLoadDemo" 
       label="First Load Demo" 
       click="btnFirstLoadDemo_click();" /> 
    </mx:HBox> 

</mx:HBox> 

Toute idée de ce qui se passe ici?

Répondre

1

Vous mélangez des espaces de coordonnées. x and y sont dans l'espace de coordonnées du conteneur parent, mais vous convertissez comme s'ils se trouvaient dans l'espace de coordonnées du bouton lui-même.

<mx:HBox id="container"> 
    <mx:Button id="btnBack" /> 
    <mx:Button id="btnFirstLoadDemo" /> 
</mx:HBox> 

avec

var pt:Point = new Point(btnFirstLoadDemo.x, btnFirstLoadDemo.y); 
var globalPoint:Point = container.contentToGlobal(pt); 
+0

Wow, je suis un idiot, bonne prise, merci! – user277240