Как вращать изображение вдоль оси Y с помощью Flash Builder 4.6? - PullRequest
0 голосов
/ 05 января 2012

Добрый день, Я пытаюсь повернуть изображение с помощью поворота Y, но оно всегда поворачивается в зависимости от левой стороны изображения. Есть ли способ изменить точку поворота, чтобы она была в центре изображения? Похоже, вы должны быть в состоянии использовать метод transformAround (), но у меня возникают проблемы с поиском примера transformAround, который имеет отношение к изображениям. У кого-нибудь есть примеры того, как это сделать, или я поступаю неправильно? То, что я пытаюсь сделать, это создать слайд-шоу, которое вращается вокруг, и вы нажимаете на изображения, чтобы увеличить. Спасибо за вашу помощь извините за длинный вопрос.

1 Ответ

1 голос
/ 06 января 2012

Поскольку вы используете среду 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>
...