Щелкните положение SWF / IMAGE в центре: FLEX - PullRequest
0 голосов
/ 19 марта 2012

Я пытаюсь сделать положение щелчка для центрирования в flex. Мой код

<fx:Declarations>
    <s:Parallel id="transformer" target="{swe}">
        <s:Scale id="scaleby" scaleXBy="0.2" scaleYBy="0.2" autoCenterTransform="false"/>           
    </s:Parallel>
</fx:Declarations>




   <s:Group width="500" height="350" clipAndEnableScrolling="true">
               <s:SWFLoader source="CasuarinaBigMap.swf"  width="500"   height="350" id="swe" click="swe_clickHandler(event)"/> 

 </s:Group>


protected function swe_clickHandler(event:MouseEvent):void
{
        scaleby.transformX = event.mouseX;
        scaleby.transformY = event.mouseY;
        transformer.play(); 
}

Мое питание Как я могу сделать смещенную точку панорамирования в центр окна? Пожалуйста, помогите.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 19 марта 2012

Это должно сработать:

<fx:Declarations>
    <s:Move id="moveEffect" />
</fx:Declarations>

<s:Group id="mapContainer" width="300" height="300" clipAndEnableScrolling="true"
         click="pan(event.localX, event.localY)">

    <s:Image id="map" source="@Embed('bigMap.png')" />
</s:Group>

'localX' и 'localY' - это позиции мыши 'x' и 'y' относительно mapContainer.

А теперьметод pan ():

private function pan(mouseX:Number, mouseY:Number):void {
    //calculate the offset from mapContainer's center
    var diffX:Number = mapContainer.width/2 - mouseX;
    var diffY:Number = mapContainer.height/2 - mouseY;

    //move the map through the move effect
    moveEffect.xFrom = map.x;
    moveEffect.yFrom = map.y;
    moveEffect.xTo = diffX;
    moveEffect.yTo = diffY;

    moveEffect.play([map]);
}
0 голосов
/ 19 марта 2012

Попробуйте использовать эффект Move вместо эффекта Scale.

...