Hola valdevespi.
Voy a intentar explicar lo que hice. No se vale pasar Fla's sin explicar (eso me dijeron).
1.- En tu proyecto haces dos escenas: uno de tu película principal, que la denominarás "Movie", y la otra llamada "Preloader".
2.- En tu escena Preloader sólo pones 1 frame, donde en el escenario pondrás tu gráfico y en acciones el código que te doy al final.
3.- El efecto de botella que se llena es así:
- Primero pones la barra animada que crecerá. Dibujas con un rectángulo, lo conviertes en símbolo MC denominado "Barra", y pones 100 frames. En el frame 1 la barra está vacía, en el frame 100 está llena (puedes trabajar con con relleno de color o con otra barra encima de color y que luego se desplace). En el medio creas una interpolación de movimiento, de modo que por cada frame que avance la línea de tiempo, el relleno de color va creciendo. Esta barra en el escenario lo pones vertical, obviamente. Modificas el ancho y largo de tu barra de modo que calce en tu botella.
- Encima del MC Barra y en el mismo frame pones tu botella. La botella es un gráfico GIF hueco, es decir un rectángulo blanco (o del color de tu fondo), y un hueco con forma de botella.
4.- En las acciones del frame pones el siguiente código:
Cita: /* Declaro la función de precarga "cargando", esta función se ejecutara
todo el tiempo hasta que haya cargado totalmente la pelicula */
function cargando() {
// Declaración de variables
var total, cargados, porcentaje;
// A la variable "total" se le asigna el tamaño de la pelicula en bytes
total = _root.getBytesTotal();
// A la variable "cargados" se le asignan el total de bytes hasta el
//momento descargados de la web
cargados = _root.getBytesLoaded();
//Por medio de una regla de tres obtiene el porcentaje cargado y redondea el valor con la función
//"Math.floor"
porcentaje = Math.floor((cargados*100)/total);
//Asigna al campo de texto porcentaje_txt el porcentaje cargado
porcentaje_txt.text = porcentaje+" %";
//Mueve la barra de carga al frame correspondiente al porcentaje
barra_mc.gotoAndStop(porcentaje);
//Si la cantidad de bytes cargados es igual a la cantidad total de bytes
if (cargados == total) {
//Hacer que se deje de ejeuctar esta función
clearInterval(hiloPrecarga);
//Iniciar la pelicula
gotoAndPlay("Movie", 1);
}
}
// setInterval nos servira para que la función "cargando" se ejecute cada 1 milisegundo
// Asi, nuestra función revisara constantemente la cantidad de bytes descargados
// y solo iniciara la pelicula hasta que la descarga termine
// la variable "hiloPrecarga" nos servira para saber que esta corriendo nuestra función
// y frenar su ejecución cada milisegundo por medio de "clearInterval"
var hiloPrecarga = setInterval(cargando, 1);
//Evita que inicie la pelicula
stop();
Lo bueno de este método es que si tienes ya hecha tu animación principal, no necesitas modificarla para poner tu preloader. Simplemente creas otra escena y allí haces tu preloader.
Y listo! Espero que te funcione.
Saludos.