Hola,
estoy realizando una web en la que he puesto las distintas secciones en SWF diferentes, y las cargo con una transición (un fade out-fade in). El código del fader está en un archivo AS aparte, y me gustaría poner un preloader, pero se me está complicando.
el código de la transición que está en el archivo "loader.as" es el siguiente:
Código:
//MC donde cargaremos las diferentes secciones.
_root.createEmptyMovieClip("conte", 9999);
//MC "controlador" [ya veras porque]
_root.createEmptyMovieClip("controler", 9998);
//MCL
var lm = new MovieClipLoader();
//variable necesaria
_root.estado = 0;
lm.loadClip("bienvenida.swf", "_root.conte");
function cargamc(mc) {
//lo dejamos todo limpio
delete _root.controler.onEnterFrame;
delete _root.conte.onEnterFrame;
_root.estado = 0;
_root.conte.fader(100, 0);
//este enterframe solo controla que a terminado una parte de la transicion para mandar a cargar la otra
_root.controler.onEnterFrame = function() {
//si se ha ido el que estaba mandar a llamar al otro
if (_root.estado == 1) {
_root.estado++;
lm.loadClip(mc, "_root.conte");
}
//si el que viene ya tiene alpha 100 que elimine este controlador
if (_root.estado == 3) {
_root.estado++;
delete this.onEnterFrame;
}
};
//enterframe
}
MovieClip.prototype.fader = function(ini, fin) {
//dos parametros, alpha de inicio y de final
fax = ini;
this._alpha = ini;
this._visible = 1;
//aki decidimos si sumamos alfa o la restamos
if ((fin-ini)<=0) {
goes = 1;
xaf = -8;
} else {
goes = 2;
xaf = +8;
}
//creamos un enterframe para tener que ejecutar la funcion UNA SOLA vez
this.onEnterFrame = function() {
this._alpha = fax;
fax += xaf;
//estos dos condicionales comprueba que se a llegado a los limites =)
if (this._alpha<=fin && goes == 1) {
delete this.onEnterFrame;
_root.estado++;
}
if (this._alpha>=fin && goes == 2) {
delete this.onEnterFrame;
_root.estado++;
}
};
};
lm.onLoadInit = function(tm) {
_root.conte.fader(0, 100);
};
y en el swf que contiene los que llaman a cada sección, uso el siguiente código:
Código:
#include "loader.as";
seccion1_btn.onRelease = function (){
cargamc("seccion1.swf");
};
Ahora, ¿cómo puedo ubicar un preloader para cuando llame a cada sección?
Al principio no me preocupa tanto, porque cargo sólo texto.
Es bastante código y ya probé varias formas, pero ninguna me funcionó.
Lo que hace ahora es:
- APRETO BOTÓN DEL MENÚ
- HACE FADE OUT AL SWF ACTUAL
- CARGA EL SWF NUEVO CON FADE IN
Y lo que quisiera que haga es:
- APRETO BOTÓN DEL MENÚ
- APARECE UN MOVIECLIP DE PRECARGA DEL SWF A CARGAR
- CUANDO TERMINA DE CARGAR EL NUEVO CLIP, RECIÉN AHÍ HACE FADE OUT
- CARGA EL SWF NUEVO CON FADE IN
Gracias!
Ricardo