Comunidad de diseño web y desarrollo en internet online

Problema con preload y carga de imágenes externas

Citar            
MensajeEscrito el 20 Feb 2009 08:24 am
Hola a todos. Soy nuevo tanto aquí como en el mundo del flash, así que en primer lugar quiero aprovechar para presentarme y en segundo pedir ayuda sobre un problema que me figuro que para muchos será sencillo:
Tengo montada una galería que carga imágenes en transición a partir de un XML (lo típico para que sea mantenible por el usuario). El caso es que tengo metido un preload, pero con el código que tengo controla el tiempo de carga del código, pero no de las imágenes (o eso me parece, porqué al colocarlo en el servidor, la primera vez que se ve, las imágenes cambian a saltos en vez de en transición). ¿Cómo puedo hacer para que esté activo hasta que se haya descargado todas las imágenes?

El preload está metido en una escena inicial, y cuando termina la carga salta a la siguiente, donde está la galería. El código es el siguiente:

Código :

function cargando()
{
   var total, cargados, porcentaje;
   total = _root.getBytesTotal();
   cargados = _root.getBytesLoaded();
   porcentaje = Math.floor((cargados*100)/total);
   
   porcentaje_txt.text = porcentaje + " %";
   if (cargados == total){
      gotoAndPlay("pelicula");
      clearInterval(hiloPrecarga);
   }
   
}
var hiloPrecarga = setInterval(cargando,100);
stop();



Mil gracias de antemano.

Por rolfo

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Feb 2009 09:57 am
mmm, en realidad tienes 3 eventos de carga, el primero es la carga incial del swf, el segundo es la carga del XML y el tercero es la carga de las imagenes, no se como funcione tu galeria, pero tienes que comparar las imagenes cargadas con el numero de imagenes a cargar, cuando estas 2 cifras sean iguales, ya puedes desplegar tu galeria.

algoa si como:

Código ActionScript :

function onLoadInit( target:MovieClip ):Void 
{ 
   if( (++cargadas) >= imagenes.length )    
   { 
      inciar(); 
   } 
} 


Suerte.

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 23 Feb 2009 03:07 pm
El tema ha ¿evolucionado? bastante y me he cargado la primera escena y lo he dejado todo en la misma para así poder controlar la carga del xml y no tener que hacerla dos veces.
De esta manera, por lo que he indagado hasta ahora, para que la galería comience a funcionar una vez ya estén cargadas todas las imágenes, lo que tengo que hacer es cargarlas primero en un movieclip que creo que vacio y poner un listener para comprobarlo.

Más o menos (he omitido las funciones que afectan al posterior funcionamiento de la galería) este es el código y todo funciona correctamente a excepción del listener, pues en la función loadImage entra, pero luego con la función del listener.onLoadComplete (con onLoadError u otros tampoco) no hace ni caso:

Código :


var contenedor = this.createEmptyMovieClip("contenedor", this.getNextHighestDepth());

slides_xml = new XML();
slides_xml.onLoad = startSlideShow;
slides_xml.load("flash/slides.xml");
slides_xml.ignoreWhite = true;

var interruptor;
var temporizador_general;
var temporizador_general_activo;
var temporizador_cambio;
var current_image;

interruptor = 1;

function loadImage(n) {

   listener.onLoadComplete=function(target_contenedor, httpStatus){
    if (n+1 < total) {
       loadImage(n + 1);
      }else{
         trace("se cargaron todas las imágenes en el contenedor");
      //comienza a andar la galería 
                updateSlide(firstSlideNode);
       temporizador_general = setInterval(avanzar,3500); 
       temporizador_general_activo = 1;
          }
      
   }*/
   
   var total = totalSlides;
   
   var mcLoader = new MovieClipLoader();
   var listener = new Object();
   
   var imageName = slides_xml.firstChild.childNodes[n].attributes.jpegURL;
   mcLoader.addListener(listener);
   mcLoader.loadClip(imageName, contenedor);  
}



function startSlideShow(success) {
   if (success == true) {
      
      rootNode = slides_xml.firstChild;
      totalSlides = rootNode.childNodes.length;
      firstSlideNode = rootNode.firstChild;
      lastSlideNode = rootNode.lastChild;
      currentSlideNode = firstSlideNode;
      currentIndex = 1;
      
               //esperamos a que cargue el xml
         loadImage(0,currentSlideNode);

   }
   
}


Seguro que es alguna chorrada que se me está pasando porqué no tengo apenas idea en esto, pero me tiene loco ya. Cualquier ayuda será más que agradecida.

Por rolfo

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Feb 2009 08:43 pm

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 23 Feb 2009 08:47 pm
Aun asi, en caso de que no quicerias cambiar tu slideshow, por el que yo te propongo, te puede servir de ejemplo, observa como dice, cargador.addListener( this ) y tiene una funcion como esta:

Código ActionScript :

//-- Eventos del MovieClipLoader --// 
function onLoadInit( target:MovieClip ):Void 
{ 
   //Hacemos invisible 
   target._parent._visible = false; 
   //Centramos 
   target._parent._x = target._parent._parent.bound_mc._width /  2; 
   target._parent._y = target._parent._parent.bound_mc._height /  2; 
   target._x = target._width / -2; 
   target._y = target._height / -2; 
   //Si ya se cargo todo, podemos inciar 
   if( (++loading) >= cargoDiapositivas.length )    
   { 
      startSlideShow(); 
   } 
} 


Lo hace invisible, lo centra y hasta que no este todo cargado, se puede iniciar. seria el ejemplo que te falta, pero te recomiendo mi slideshow, esta muy personalizable y tiene varios tipos de transiciones. :cool:

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 06 Nov 2009 11:37 pm
Y este código ¿se puede usar cuando quieres cargar un swf externo con una galería de imágenes xml?

Por libedlulo

9 de clabLevel



 

firefox

 

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