11
Aug
08

Animating properties using the AnimateProperties class in Flex and Flash Player 10

In a previous entry, “Rotating an image along its x-axis, y-axis, and z-axis in Flex and Flash Player 10″, we saw how you could rotate an image along the x-axis, y-axis, and z-axis by setting the rotationX, rotationY, and rotationZ properties.

The following example shows how you can use the new new AnimateProperties class to rotate of an image along the y-axis by animating the rotationY property.

Full code after the jump.

To use the following code, you must have Flash Player 10 and a Flex Gumbo SDK installed in your Flex Builder 3. For more information on downloading and installing the Gumbo SDK into Flex Builder 3, see “Using the beta Gumbo SDK in Flex Builder 3″.

View MXML

<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2008/08/11/animating-properties-using-the-animateproperties-class-in-flex-and-flash-player-10/ -->
<Application xmlns="http://ns.adobe.com/mxml/2009"
        xmlns:mx="library:adobe/flex/halo"
        layout="flex.layout.BasicLayout">

    <Declarations>
        <AnimateProperties id="animateProps">
            <propertyValuesList>
                <PropertyValuesHolder property="rotationY"
                        values="[0, 360]" />
            </propertyValuesList>
        </AnimateProperties>
    </Declarations>

    <Script>
        private function animateRotationY():void {
            animateProps.play([img]);
        }
    </Script>

    <Button label="Rotate y-axis"
            top="10"
            left="10"
            click="animateRotationY();" />

    <mx:Image id="img"
            source="@Embed('Fx.png')"
            width="100"
            height="100"
            horizontalCenter="0"
            verticalCenter="0" />

</Application>

View source is enabled in the following example.

You can also create the AnimateProperties object using ActionScript, as seen in the following example:

View MXML

<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2008/08/11/animating-properties-using-the-animateproperties-class-in-flex-and-flash-player-10/ -->
<Application xmlns="http://ns.adobe.com/mxml/2009"
        xmlns:mx="library:adobe/flex/halo"
        layout="flex.layout.BasicLayout"
        initialize="init();">

    <Script>
        import flex.effects.AnimateProperties;
        import flex.effects.PropertyValuesHolder;

        private var animateProps:AnimateProperties;

        private function init():void {
            var rotYProp:PropertyValuesHolder;
            rotYProp = new PropertyValuesHolder("rotationY", [0, 360]);
            animateProps = new AnimateProperties();
            animateProps.propertyValuesList = [rotYProp];
        }

        private function animateRotationY():void {
            animateProps.play([img]);
        }
    </Script>

    <Button label="Rotate y-axis"
            top="10"
            left="10"
            click="animateRotationY();" />

    <mx:Image id="img"
            source="@Embed('Fx.png')"
            width="100"
            height="100"
            horizontalCenter="0"
            verticalCenter="0" />

</Application>

You can also specify the target to animate in the <AnimateProperties /> tag, as seen in the following example:

<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2008/08/11/animating-properties-using-the-animateproperties-class-in-flex-and-flash-player-10/ -->
<Application xmlns="http://ns.adobe.com/mxml/2009"
        xmlns:mx="library:adobe/flex/halo"
        layout="flex.layout.BasicLayout">

    <Declarations>
        <AnimateProperties id="animateProps" target="{img}">
            <propertyValuesList>
                <PropertyValuesHolder property="rotationY"
                        values="[0, 360]" />
            </propertyValuesList>
        </AnimateProperties>
    </Declarations>

    <Script>
        private function animateRotationY():void {
            animateProps.play();
        }
    </Script>

    <Button label="Rotate y-axis"
            top="10"
            left="10"
            click="animateRotationY();" />

    <mx:Image id="img"
            source="@Embed(’Fx.png’)"
            width="100"
            height="100"
            horizontalCenter="0"
            verticalCenter="0" />

</Application>

4 Responses to “Animating properties using the AnimateProperties class in Flex and Flash Player 10”


  1. 1 Raul Riera Aug 11th, 2008 at 9:36 am

    Why is this the Y property? I dont get this… this should be the X rotating 3d

  2. 2 Raul Riera Aug 11th, 2008 at 10:36 am

    I know that you are saying the animation happens on the “axis” but that is not very clear to the user… At least I think so

  3. 3 peterd Aug 12th, 2008 at 8:52 am

    Well, it looks like this code may have been affected by a recent API change. If you’re using Gumbo SDK 4.0.0.2810 or newer, it appears that the AnimateProperties class has been renamed to Animate.

    “Thanks Chet!” :)

    Peter

  4. 4 Greg Aug 13th, 2008 at 11:46 am

    For some info about 3D rotation, you can check out the Microsoft XNA game developer site.

    http://creators.xna.com/en-us/education/gettingstarted/bg3d/details/6_2

    This page shows each of the 3 types of 3D rotation (Pitch: around x-axis; Yaw: around y-axis; Rotation: around z-axis). From what I can tell based on this example, rotationX = Pitch, rotationY = yaw, and rotationZ = rotation.

Leave a Reply

This blog is terrible at eating HTML tags. If you plan on posting code/XML, please escape your "<" characters as "&lt;" and your ">" characters as "&gt;".