|
En realidad hacer una precarga es mucho más simple de lo que parece. Ya
que Flash nos entrega la cantidad de bytes totales de la película y la
cantidad de bytes cargados. Basta con hacer una regla de tres para
sacar el porcentaje cargado, y como verás crear una animación que
avance según el porcentaje es igualmente fácil. Presta atención:
Empecemos por la función que nos dice el porcentaje, primero expongo la función y después la explico.
---
function cargado() {
var total, cargado, porcentaje;
total = _root.getBytesTotal();
cargado = _root.getBytesLoaded();
porcentaje = Math.floor((cargados*100)/total);
movieClipPrecarga.gotoAndStop(porcentaje);
casillaDeTexto.text = "Cargado " + porentaje + "%";
if (cargados == total) {
clearInterval(ciclo);
play();
}
}
---
La
primera línea, como sabras si tienes conocimientos básicos de action
script, crea la función "cargado" que cuando sea llamada, calcula la el
porcentaje cargado y lo muestra en pantalla.
La segunda línea
crea las variables necesarias, una buena costumbre de programación que
no debe caer en desuso aunque en ActionScript no es obligatorio.
Las
líneas tercera, cuarta obtienen la cantidad de bytes totales y la
cantidad de bytes cargados y los guarda en las variables "total" y
"cargado".
La quinta línea hace la regla de tres sobre
"cargados" y "total" para obtener el porcentaje que ha sido cargado.
Luego lo redondea hacia abajo con "Math.floor()".
Ahora empieza la parte clave:
En el código de ejemplo, el MovieClip tiene el nombre de instancia "movieClipPrecarga" que puedes cambiar por el que quieras
La
línea séptima cambia el contenido de la casilla de texto que tenga como
nombre de instancia "casillaDeTexto" por un mensaje mostrando el
porcentaje cargado. También puedes cambiar el nombre de instancia por
el que quieras.
La línea octava comprueba si ya se han cargado
todos los bytes (si los bytes cargados son la misma cantidad que los
bytes totales), y si es así, finaliza la precarga y avanza de fotograma.
Por
último creamos un intervalo que se encargará de ejecutar la función
cada x milisegundos. Cuanto menor sea x más fluida será la precarga
pero también consumirá más recursos en el ordenador cliente. En mi
opinion, con poner 50 milisegundos es bastante.
---
var ciclo = setInterval(cargado, 50);
---
Y creamos una función que detenga la película hasta que la precarga termine.
---
stop();
---
Con
esto tienes la parte de la programación de la precarga, el diseño
consiste en el MocieClip con la barra de carga y la casilla de texto.
En
resumen, el primer fotograma de la película (o en una escena insertada
antes que las demás si mover todos los fotogramas es mucho problema)
inserta el MovieClip, la casilla de texto y el siguiente código:
---
function cargado() {
var total, cargado, porcentaje;
total = _root.getBytesTotal();
cargado = _root.getBytesLoaded();
porcentaje = Math.floor((cargados*100)/total);
movieClipPrecarga.gotoAndStop(porcentaje);
casillaDeTexto.text = "Cargado " + porentaje + "%";
if (cargados == total) {
clearInterval(ciclo);
play();
}
}
var ciclo = setInterval(cargado, 50);
stop();
---
Con esto la precarga ya está hecha.
Perdón
si se hizo demaciado largo, es una costumbre que tengo de intentar no
dejar ningún posible error o variante sin tener en cuenta.
Intentando no alargarlo más lo termino aqui.
Espero haberlo dejado claro, sino no dudes pedir una aclaración.
Saludos
---
Sel
|