2010-06-14 19 views
1

J'ai essayé de faire fonctionner ce point et je n'arrive pas à le comprendre. Il y a un contrôle Image que lorsque je clique dessus, je dois faire un zoom avant (en utilisant le centre/point de transformation où l'on clique sur la souris).Flex 4: Mise à l'échelle sur un point (zoom sur une image où l'utilisateur a cliqué sur la souris)

J'ai le grand travail de la transition de zoom, mais quand je mets transformX & tranformY (avec autoCenterTransform faux), il ne zoom pas en ce moment-là.

Voici mon code qui effectue un zoom seulement (et non à un point spécifique)

<fx:Script> 
     <![CDATA[ 

      protected function imgLogo_clickHandler(event:MouseEvent):void 
      { 
       transformer.play(); 
      }   
     ]]> 
    </fx:Script> 

    <fx:Declarations>  
     <s:Parallel id="transformer" target="{imgLogo}"> 
      <s:Scale scaleXBy="0.5" scaleYBy="0.5" />   
     </s:Parallel> 
    </fx:Declarations> 

    <mx:Image id="imgLogo" width="250" x="100" y="100" 
      maintainAspectRatio="true" source="@Embed('src/logo.png')"  
      click="imgLogo_clickHandler(event)" /> 

Toute aide est grandement appréciée. Merci

Répondre

2

Après avoir creusé plus loin, j'ai été en mesure de comprendre cela. Vous devez définir les transformX et transformY pour les coordonnées de la scène (PAS les locales) à partir du MouseEvent.

protected function imgLogo_clickHandler(event:MouseEvent):void 
{ 
    scaleImg.transformX = event.stageX; 
    scaleImg.transformY = event.stageY; 
    transformer.play(); 
} 

Et modifier la déclaration pour la Scale comme si

<s:Scale id="scaleImg" scaleXBy="0.5" scaleYBy="0.5" autoCenterTransform="false" />