<?xml version="1.0" encoding="utf-8"?>
<mx:Application 
    xmlns:mx="http://www.adobe.com/2006/mxml" 
    layout="absolute"  
    backgroundColor="#000000" 
    horizontalScrollPolicy="off" 
    verticalScrollPolicy="off" 
    frameRate="33"
    creationComplete="onCreationComplete()" viewSourceURL="srcview/index.html">
    
    <mx:Script>
        <![CDATA[
            import mx.core.UIComponent;
            
            private var hDirection : Boolean = true; // true == moving right
            private var vDirection : Boolean = true; // true == moving down
            private var borderPadding : Number = 100;
            
            private function onCreationComplete() : void
            {
                this.addEventListener(Event.ENTER_FRAME, onEnterFrame);
            }

            private function onEnterFrame( event : Event ):void
            {
                bitmapDataTarget.source = new Bitmap( getUIComponentBitmapData( UIComponent( Application.application ) ) );
                moveImage();
            }
            
            private function moveImage() : void
            {
                if ( (movingImage.x-borderPadding) <= 0 ) hDirection = true;
                if ( (movingImage.x+borderPadding) >= this.width ) hDirection = false;
                
                if ( (movingImage.y-borderPadding) <= 0 ) vDirection = true;
                if ( (movingImage.y+borderPadding) >= this.height ) vDirection = false;
                
                movingImage.x += ((hDirection ? 1 : -1) * speedSlider.value);
                movingImage.y += ((vDirection ? 1 : -1) * speedSlider.value);
                
                movingImage.rotation += rotationSlider.value;
            }
            
            private function getUIComponentBitmapData( target : UIComponent ) : BitmapData
            { 
                var bd : BitmapData = new BitmapData( target.width, target.height );
                var m : Matrix = new Matrix();
                bd.draw( target, m );
                return bd;  
            }
            
            private function changeAlpha() : void
            {
                bitmapDataTarget.alpha = .9 + (alphaSlider.value/100);
            }
            
        ]]>
    </mx:Script>
    
    <mx:Image top="0" left="0" bottom="0" right="0" id="bitmapDataTarget" alpha=".95"  />
    
    <mx:Image source="@Embed('cynergy.png')" id="movingImage"  x="171" y="22"/>
    
    <mx:HSlider left="88" top="10" id="alphaSlider" value="5" change="changeAlpha()" right="10"/>
    <mx:Label x="10" y="10" text="trail length:" color="#ffffff"/>
    
    <mx:HSlider left="88" top="30" id="speedSlider" value="1" right="10" minimum="0" maximum="10" />
    <mx:Label x="10" y="36" text="speed:" color="#ffffff"/>
    
    <mx:HSlider left="88" top="56" id="rotationSlider" value="1" right="10" minimum="-5" maximum="5" />
    <mx:Label x="10" y="62" text="rotation:" color="#ffffff"/>
    
</mx:Application>