Comunidad de diseño web y desarrollo en internet online

consultas de clase moviecliploader

Citar            
MensajeEscrito el 14 Sep 2008 12:09 pm
Hola, compañeros!

Tengo un par de consultas que haceros, a ver si me podéis ayudar.

Consulta1
Estoy preparando una web en la que mediante unos botones cargo un swf en un clip. Este swf es un submenú compuesto por más botones (thumbnails) que tienen un efecto "easing" (en función de la posición del ratón, se desplazan a derecha o izquierda). Al clickar en cada uno de estos botones (thumbnails), se carga en otro mc la imagen de turno. Todas las cargas vienen con preload.

Pues bien, el problema es que aunque todo funciona perfectamente, si clickamos en diferentes thumbnails a lo loco (rápido y de manera desordenada), todo va bien pero aparece una segunda barra de precarga en bucle en la parte superior de la pantalla. Todo sigue funcionando bien, pero esta dichosa barrita estará presente para siempre salvo que actualicemos la pantalla en el navegador. Esto me pasa en firefox3 y en safari, pero intuyo que debe ser un bug del código, o algo que no he hecho bien.

¿Podéis echar un vistazo al código por si veis algo mal?
¿Creéis que hay otro código que me pueda servir y que funcione mejor?

var precargador_mcl:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();
Stage.showMenu = false;

Código:
listener.onLoadStart = function(target_mc) {
_root.attachMovie("barra", "barra_mc", _root.getNextHighestDepth());
_root.barra_mc._y = Stage.height/2;
_root.barra_mc._x = Stage.width/2;
};

listener.onLoadProgress = function(target_mc, loadedBytes, totalBytes) {
var porcentaje:Number;
porcentaje = Math.round((loadedBytes*100)/totalBytes);
_root.barra_mc.gotoAndStop(porcentaje);
target_mc._visible = false;
target_mc.stop();
};

listener.onLoadComplete = function(target_mc) {
_root.barra_mc.removeMovieClip();
target_mc._visible = true;
target_mc.play();
};

precargador_mcl.addListener(listener);

b_fotografia.onRelease = function() {
precargador_mcl.loadClip("01_Flash/06_fotografia.swf",contenedor1);
};
stop();

Consulta2:
Tengo entendido que al cargar un swf o un jpg en un mc vacío, por defecto queda registrado en la esquina de ese mc.
Mi mc vacio mide 660x450px, y me gustaría poder centrar una foto de, por ejemplo, 200x450px en el mismo. ¿Es posible hacer esto?

Muchísimas gracias de antemano!!!
Un saludo!

Por midisseny

26 de clabLevel



 

firefox
Citar            
MensajeEscrito el 14 Sep 2008 04:58 pm
Para resolver el primer problema debes eliminar la barrita antes de insertarla si esta existe en la escena:

Código ActionScript :

listener.onLoadStart = function(target_mc:MovieClip):Void {

    if(_root.barra_mc){

        _root.barra_mc.removeMovieClip();

    }

    _root.attachMovie("barra", "barra_mc", _root.getNextHighestDepth());
    _root.barra_mc._y = Stage.height/2;
    _root.barra_mc._x = Stage.width/2;
};


En cuanto a la segunda duda, cuando lees algo dentro de un MovieClip este se remplaza por las dimensiones del SWF o JPG leido, po lo que las dimensiones que este tenía anteriormente se pierden, es por eso que casi siempre se carga el contenido en un MovieClip vacío totalmente. En realidad puedes situar el movieClip después de que se lea el contenido (onLoadInit) en las coordenadas que desees, donde quieres realmente situarlo, en el centro de la pantalla?

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

msie7
Citar            
MensajeEscrito el 14 Sep 2008 05:22 pm
Hola, Elchininet!

Muchas gracias por tu respuesta! :D La verdad es que soy novato extremo y me pierdo con mucha facilidad. Tomo nota de tu corrección en el código y me pongo manos a la obra ahora mismo.

En cuanto a mi segunda consulta, he conseguido solucionarlo de una manera que no se si es la mejor, pero me funciona perfectamente. De hecho he leído la solución en este foro. A ver qué te parece:
He creado un fondo con la dimensión que necesito (660x450px), lo he convertido a símbolo (gráfico) dándole como nombre de instancia "fondo". En el mc vacío he añadido el siguiente código:

onClipEvent (data) {
_x = _parent.fondo._x+_parent.fondo._width/2-_width/2;
_y = _parent.fondo._y+_parent.fondo._height/2-_height/2;
}

De esta manera, cualquier imagen que cargue (sea cual sea su proporción) me queda centrada en la página (en mis 660x450px).

En cuanto revise mi problema con la barrita de precarga os cuento qué tal me ha ido!! :wink:

Por midisseny

26 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.