Я бы применял эффекты к компоненту.
И лэйаутом, наверняка, можно это решить
или в лоб:

Код AS3:
<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"
minWidth="955"
minHeight="600">
<fx:Declarations>
<s:Move id="alertMoveIn" target="{myAlert}" xFrom="{alertInitX}" xTo="{alertCenteredX}"/>
<s:Move id="alertMoveOut"
target="{myAlert}"
xFrom="{alertCenteredX}"
xTo="{alertOutX}"
effectEnd="alertMoveOut_effectEndHandler(event)"/>
</fx:Declarations>
<fx:Script>
<![CDATA[
import components.CustomWindow;
import mx.core.UIComponent;
import mx.events.CloseEvent;
import mx.events.EffectEvent;
import mx.managers.PopUpManager;
[Bindable]
protected var myAlert:UIComponent;
[Bindable]
protected var alertInitX:int;
[Bindable]
protected var alertInitY:int;
[Bindable]
protected var alertCenteredX:int;
[Bindable]
protected var alertOutX:int;
protected function showAlertButton_clickHandler(event:MouseEvent):void
{
myAlert=new CustomWindow();
myAlert.addEventListener(CloseEvent.CLOSE,alertCloseHandler);
PopUpManager.addPopUp(myAlert,this,true);
myAlert.y=(stage.stageHeight-myAlert.height)/2;
alertCenteredX=(stage.stageWidth-myAlert.width)/2;
alertOutX=stage.stageWidth+myAlert.width;
alertInitX=-myAlert.width;
alertInitY=(stage.stageHeight-myAlert.height)/2;
alertMoveIn.play();
}
protected function alertCloseHandler(event:CloseEvent):void
{
myAlert.removeEventListener(CloseEvent.CLOSE,alertCloseHandler);
alertMoveOut.play();
}
protected function alertMoveOut_effectEndHandler(event:EffectEvent):void
{
PopUpManager.removePopUp(myAlert);
trace("alert removed");
}
]]>
</fx:Script>
<s:Button label="show alert" id="showAlertButton" click="showAlertButton_clickHandler(event)"/>
</s:Application>
CustomWindow

Код AS3:
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" width="100" height="100">
<fx:Script>
<![CDATA[
import mx.events.CloseEvent;
]]>
</fx:Script>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<s:Rect width="100%" height="100%">
<s:stroke>
<s:SolidColorStroke color="0x000000" weight="2"/>
</s:stroke>
<s:fill>
<s:SolidColor color="0xffffff"/>
</s:fill>
</s:Rect>
<s:HGroup verticalAlign="middle" horizontalAlign="center" width="100%" height="100%">
<s:Button label="close" click="{dispatchEvent(new CloseEvent(CloseEvent.CLOSE))}"/>
</s:HGroup>
</s:Group>