Preload adaptable al "Stage.width"
Hola:
Voy a atreverme a poner aquí mi experimento casero de un preload adaptable a ver si alguna mente privilegiada me puede ayudar con mi único problema aparente.
Problema: El preload parece funcionar tal cual, pero al redimensionar la ventana, la barra de carga (linea) no se redimensiona como la barra de fondo, de forma que si la ventana se redimensiona la carga no parece real.
El código que he usado es este: (yo no soy programador, que conste, por eso digo que para mi es casero)
<code>Stage.align = "TL";
// *** Stop the stage from scaling with the browser window.
Stage.scaleMode = "noScale";
stop();
z = Stage.width;
cargador.onEnterFrame = function() {
var r = Math.round((getBytesLoaded()/getBytesTotal())*z);
cargador.linea._xscale = r;
//
if (getBytesLoaded() == getBytesTotal()) {
delete this.onEnterFrame;
cargador._visible = false;
gotoAndStop(2);
}
};
// CARGADOR POSICION INICIAL
cargador.barra._x = Stage.width-Stage.width;
cargador.barra._y = Stage.height/2;
cargador.barra._xscale = Stage.width;
cargador.linea._x = Stage.width-Stage.width;
cargador.linea._y = Stage.height/2;
// LISTENER ON RESIZE
sizeListener = new Object();
sizeListener.onResize = function() {
cargador.barra._x = Stage.width-Stage.width;
cargador.barra._y = Stage.height/2;
cargador.linea._x = Stage.width-Stage.width;
cargador.linea._y = Stage.height/2;
cargador.barra._xscale = Stage.width;
//cargador.linea._xscale = r;
};
Stage.addListener(sizeListener);
////</code>
En el escenario de flash tengo un movieclip con nombre de instancia "cargador", que a su vez contiene un mc duplicado con nombres de instancia "barra" y "linea".
Por mas que he buscado tutoriales no encuentro este preload "líquido" por ninguna parte, así que decidi probar a hacermelo yo, con cierto éxito.
Pues nada, gracias por adelantado al que pueda echarme un cable.
elSuricatoRojo
Yo metería la "barra" dentro de otro movieclip (contBarra, por ejemplo) el cual tendrá otra intancia "fondo" que ocupe 100px y que sea transparenete. La barra dentro de ese contenedor tendrá un máximo de 100px de tal forma que si llevamos 55% de carga la barra tenga 55px y si llevamos 100& tendremos 100px.
De esta forma contBarra siempre tendrá 100px de ancho al 100% de escala. El tener el fondo transparente garantiza que aunque la barra tenga 55px el contenedor contBarra tenga siempre 100px (al 100% de escala)
Para hacerlo líquido, en el evento "onResize" haz que
contBarra._width=Stage.width
y para actualizar el ancho de la barra:
cargador.onEnterFrame = function() {
var porcentaje = Math.round((getBytesLoaded()/getBytesTotal())*100);
cargador.contBarra.barra._width=porcentaje
}
En resumen... al tener un nivel mas de anidamiento vas a poder separar las operaciones. Te centras por un lado en que contBarra ocupe siempre el 100% del stage y por otro en que el ancho de la barra (contBarra.barra) coincida con el porcentaje cargado.
quimeia
Muchas Gracias ! Sr. SuricatoRojo
Tras darle un par de vueltas me ha funcionado perfectamente :)
Estas cosas merecen ser compartidas, así que... por si a alguien le interesa, dejo mi ejemplo.
ejemplo:
http://www.quimeia.com/ejemplos/preload
descarga:
http://www.quimeia.com/ejemplos/preload/preload.zip
Gracias!!