Поскольку вы используете среду Flex, вы можете использовать эффекты Spark 3D для поворота изображений, а не суетиться с преобразованиями.Смотрите пример ниже (вы можете легко заменить Rect
своим изображением).Атрибут autoCenterTransform
в Rotate3D выполняет всю работу по перемещению точки вращения x, y, z к центру объекта.
<?xml version="1.0"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx">
<fx:Declarations>
<s:Rotate3D
id="rotateEffect"
target="{myImage}"
angleYFrom="0"
angleYTo="360"
duration="1000"
autoCenterTransform="true"/>
</fx:Declarations>
<s:Button label="Rotate"
x="10" y="10"
click="rotateEffect.play()"/>
<s:Rect id="myImage"
x="20" y="40"
height="100" width="100">
<s:fill>
<s:SolidColor color="0xABABAB"/>
</s:fill>
</s:Rect>
</s:Application>
В качестве альтернативы, если вы не хотите полностью центрировать точку преобразования, но только сместив точку преобразования, чтобы обеспечить вращение Y, вы можете настроить свойство transformX
вашего изображения, как показано ниже:
<?xml version="1.0"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx">
<fx:Declarations>
<s:Rotate3D
id="rotateEffect"
target="{myImage}"
angleYFrom="0"
angleYTo="360"
duration="1000"
/>
</fx:Declarations>
<s:Button label="Rotate"
x="10" y="10"
click="rotateEffect.play()"/>
<s:Rect id="myImage"
x="20" y="40"
height="100" width="100"
transformX="{myImage.width/2}">
<s:fill>
<s:SolidColor color="0xABABAB"/>
</s:fill>
</s:Rect>
</s:Application>