Espero el título sea lo suficientemente claro.
Esto es lo que tengo:
- Película contenedora que carga nuevas películas con botones de avance y retroceso.
- Cada película que es cargada en la película contenedora. Las películas cargadas tienen animaciones con la clase new Tween();
El problema es que, si avanzo o retrocedo rápidamente para ver una película siguiente o anterior, los tween se quedan en memoria y se repiten de una película a otra.
Es decir, si tengo una animación de un fadein ejecutándose y de pronto avanzo o retrocedo a una nueva película, el fadein de la nueva película inicia donde se quedó la anterior.
Ya he probado destruyendo la variable tween cada que entro en una nueva película, ya probé en el cargador descargar las películas predecesoras con removeMovieClip(miPelicula). Y no le hallo! :
Anexo el código de mis películas:
Contenedor:
Código PHP:
function cargaPelicula(peliculaParaCargar:String):Void {
var listener:Object = new Object();
var cargador:MovieClipLoader = new MovieClipLoader();
cargador.addListener(listener);
var preload:MovieClip;
listener.onLoadStart = function(clip:MovieClip):Void {
clip.setMask(mascaraContenidos);
clip._visible = false;
clip.stop();
preload = _root.attachMovie("preloader","preload",_root.getNextHighestDepth(),{_x:escenarioMitadLargo, _y:(escenarioMitadAlto-altoBotones)});
//trace("película Start");
}
listener.onLoadProgress = function(clip:MovieClip):Void {
//trace("película progress");
}
listener.onLoadInit = function(clip:MovieClip):Void {
clip._visible = true;
clip._lockroot = true;//cambia las rutas de los movieclips cargados a relativas no absolutas
clip.play();
//trace("película Init cargada");
}
listener.onLoadComplete = function(clip:MovieClip):Void {
removeMovieClip(preload);
//trace("película complete");
//cargador.removeListener(listener);
//delete cargador;
//cargador.unloadClip(peliculaParaCargar);
}
cargador.loadClip(peliculaParaCargar, contenidosMain);
}
Código PHP:
if (tweenFade != undefined){
tweenFade.rewind();
delete tweenFade;
} else {
tweenFade = new Tween();
}
function fade(movieClip, easing, inicio, fin, tiempoSeg):Void {
//delete tweenFade;
tweenFade = new Tween(movieClip, "_alpha", easing, inicio, fin, tiempoSeg, true);
listenerFade = new Object();
tweenFade.addListener(listenerFade);
tweenFade.onMotionFinished = function():Void {
tweenFade.removeListener(listenerFade);
};
}
if (tweenMover != undefined){
tweenMover.rewind();
delete tweenMover;
} else {
tweenMover = new Tween();
}
function mover(movieClip, propiedad, easing, inicio, fin, tiempoSeg):Void {
//delete tweenMover;
tweenMover = new Tween(movieClip, propiedad, easing, inicio, fin, tiempoSeg, true);
listenerMover = new Object();
tweenMover.addListener(listenerMover);
tweenMover.onMotionFinished = function():Void {
tweenMover.removeListener(listenerMover);
};
}
//-------------------------------------------------------------------------------
//---------------------------- FUNCIONES GENERALES --------------------------
//-------------------------------------------------------------------------------
titulo._alpha = 0;
grafico1._alpha = 0;
grafico2._alpha = 0;
var tituloPosY:Number = titulo._y;
var grafico1PosX:Number = grafico1._x;
var grafico2PosX:Number = grafico2._x;
fade(titulo,Strong.easeOut,titulo._alpha,100,1);
mover(titulo,"_y",Strong.easeOut,tituloPosY-100,tituloPosY,1);
listenerFade.onMotionFinished = function():Void {
fade(grafico1,Strong.easeOut,grafico1._alpha,100,1.5);
mover(grafico1,"_x",Bounce.easeOut,grafico1PosX-300,grafico1PosX,1.5);
fade(grafico2,Strong.easeOut,grafico1._alpha,100,1.5);
mover(grafico2,"_x",Bounce.easeOut,grafico2PosX+300,grafico2PosX,1.5);
};
De antemano agradezco su ayuda.