Te entendí desde el principio lo que deseabas hacer, lo que hace el script es cerrar la ventana que esté abierta:
Cada vez que se presiona un botón se declara un número de ventana que se ha abierto:
Código ActionScript :
//---Declarar la ventana que se abierto
windowOpen = this.numero;
Y después antes de abrir la ventana respectiva al botón, se cierra la anterior:
Código ActionScript :
//---Si existe una ventana abierta cerrarla
if(windowOpen > 0){
this._parent[windows[windowOpen - 1]].removeMovieClip();
}
Solo queda que estas se abran y cierren por medio de animaciones, para eso debes saber algunas cosas de TweenMax:
Código ActionScript :
//---Animará el objeto desde la posición actual en las "x"
//---hasta 200 en medio segundo
TweenMax.to(objeto, .5, {_x:200});
//---Animará el objeto desde 200 en las "x"
//---hasta la posición actual en medio segundo
TweenMax.from(objeto, .5, {_x:200});
//---Animará el objeto desde la posición actual en las "x"
//---hasta 200 en medio segundo, pero esperando un tiempo
//---de 1 segundo
TweenMax.to(objeto, .5, {_x:200, delay:1});
//---Animará el objeto desde la posición actual en las "x"
//---hasta 200 en medio segundo, y ejecutará la función
//---"finishAnimation" cuando termine
TweenMax.to(objeto, .5, {_x:200, onComplete:finishAnimation});
//---Animará el objeto desde la posición actual en las "x"
//---hasta 200 en medio segundo, y ejecutará la función
//---"finishAnimation" cuando termine mandándole como
//---parámetro el número "1"
TweenMax.to(objeto, .5, {_x:200, onComplete:finishAnimation, onCompleteParams[1]});
Conociendo como funciona TweenMax podemos entonces llegar al resultado:
Código ActionScript :
import gs.TweenMax;
import gs.easing.*;
//---Cantidad de botones
var cantidad:Number = 3;
//---Arreglo de ventanas
var windows:Array = new Array("ventana1", "ventana2", "ventana3");
//---Ventana abierta
var windowOpen:Number;
//---Acciones de los botones
for(var i:Number = 1; i <= cantidad; i++){
this["boton" + i].numero = i;
//---OnPress de los botones
this["boton" + i].onPress = function():Void{
//---Si existe una ventana abierta cerrarla
if(windowOpen > 0){
var winClose:MovieClip = this._parent[windows[windowOpen - 1]];
//---Animar la ventana hacia el centro y escala 0
TweenMax.to(winClose, .5, {_x:Stage.width / 2, _y:Stage.height / 2, _xscale:0, _yscale:0, ease:Cubic.easeOut, onComplete:deleteWindow, onCompleteParams:[winClose]});
}
//---Tiempo que se tiene que demorar en abrir la ventana
var tiempo:Number = (windowOpen > 0) ? .5 : 0;
var win:MovieClip = this._parent.attachMovie(windows[this.numero - 1], windows[this.numero - 1], this._parent.getNextHighestDepth());
win._x = (Stage.width - win._width) / 2;
win._y = (Stage.height - win._height) / 2;
//---Animar la ventana desde el centro hasta la posición actual
TweenMax.from(win, .5, {_x:Stage.width / 2, _y:Stage.height / 2, _xscale:0, _yscale:0, delay:tiempo, ease:Cubic.easeOut});
//---Declarar la ventana que se abierto
windowOpen = this.numero;
}
}
//---Función de borrar el movieAbierto
function deleteWindow(window:MovieClip):Void{
window.removeMovieClip();
}