<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2008/10/25/incrementally-3d-rotating-objects-in-flex-using-the-fxrotate3d-in-flex/ -->
<FxApplication name="FxRotate3D_yBy_test"
        xmlns="http://ns.adobe.com/mxml/2009"
        initialize="init();">
    <layout>
        <BasicLayout />
    </layout>

    <Script>
        <![CDATA[
            import mx.components.FxButton;
            import mx.components.VGroup;
            import mx.controls.Image;
            import mx.effects.FxAnimate;
            import mx.effects.FxRotate3D;
            import mx.events.FlexEvent;

            [Embed("assets/Fx2.png")]
            private const LOGO:Class;

            private var fxRotate3DNeg:FxRotate3D;
            private var fxRotate3DPos:FxRotate3D;
            private var fxButtonNeg:FxButton;
            private var fxButtonPos:FxButton;
            private var image:Image;

            private function init():void {
                fxButtonNeg = new FxButton();
                fxButtonNeg.label="FxRotate3D yBy -= 15";
                fxButtonNeg.autoRepeat = true;
                fxButtonNeg.setStyle("repeatDelay", 500);
                fxButtonNeg.setStyle("repeatInterval", 100);
                fxButtonNeg.addEventListener(FlexEvent.BUTTON_DOWN,
                            fxButtonNeg_buttonDown);

                fxButtonPos = new FxButton();
                fxButtonPos.label="FxRotate3D yBy += 15";
                fxButtonPos.autoRepeat = true;
                fxButtonPos.setStyle("repeatDelay", 500);
                fxButtonPos.setStyle("repeatInterval", 100);
                fxButtonPos.addEventListener(FlexEvent.BUTTON_DOWN,
                            fxButtonPos_buttonDown);

                var vGroup:VGroup = new VGroup();
                vGroup.setStyle("left", 10);
                vGroup.setStyle("top", 10);
                vGroup.addItem(fxButtonNeg);
                vGroup.addItem(fxButtonPos);
                addItem(vGroup);

                image = new Image();
                image.source = LOGO;
                image.setStyle("horizontalCenter", 0);
                image.setStyle("verticalCenter", 0);
                addItem(image);

                fxRotate3DNeg = new FxRotate3D();
                fxRotate3DNeg.target = image;
                fxRotate3DNeg.yBy = -30;

                fxRotate3DPos = new FxRotate3D();
                fxRotate3DPos.target = image;
                fxRotate3DPos.yBy = 30;
            }

            private function fxButtonNeg_buttonDown(evt:FlexEvent):void {
                playEffect(fxRotate3DNeg);
            }

            private function fxButtonPos_buttonDown(evt:FlexEvent):void {
                playEffect(fxRotate3DPos);
            }

            private function playEffect(target:FxAnimate):void {
                if (!target.isPlaying) {
                    target.play();
                }
            }
        ]]>
    </Script>

</FxApplication>