Comunidad de diseño web y desarrollo en internet online

Cargar un XML desde FLASH - SE CUELGA - HELP!!! (GALERIA)

Citar            
MensajeEscrito el 23 Sep 2009 12:33 am
Gente, queria pedir ayuda con este tema, tengo un codigo ActionScript para hacer una Galeria de Imagenes, las imagenes se cargan mediante un XML.

El problema es que a medida que el XML tiene mas imagenes se cuelga la carga de todo, es decir, cuando el flash carga el archivo XML se queda el explorador colgado. El XML tiene 4100 lineas pero pesa 260kb. Son 15 seg despues arranca con la carga de las imagenes.

Codigo FLASH:

Código ActionScript :

// -- posición donde se cargará la primera imagen
x = 10;
y = 10;
// -- ancho y alto de la imagen más 5 pixeles de espacio
ancho = 64;
alto = 48;
// -- numero de columnas
num_columnas = 5;
// -- creo un nuevo objeto XML
miXML = new XML();
// -- ignorar espacios 
miXML.ignoreWhite = true;
// -- proceso si la carga tuvo éxito
miXML.onLoad = function(succes) {
   if (succes) {
      // -- por cada nodo hijo del nodo principal...
      for (var i = 0; i < this.firstChild.childNodes.length; i++) {
         // -- delaro una variable que recoje el atributo del nodo (nombre de la imagen)
         thumb = this.firstChild.childNodes[i].attributes.id;
         // -- creo un clip de película vacio 
         holder_mc = createEmptyMovieClip("holder_mc" + i, i + 100);
         // -- creo un clip de película vacio 
         item = holder_mc.createEmptyMovieClip("diapo" + i, i + 100);
         // --  cargo la imágen el clip vacio
         item.loadMovie(thumb);
         // -- indico posición x - y
         holder_mc._x = x;
         holder_mc._y = y;
         // -- se crea una variable que contiene la url correspondiente
         holder_mc.url = this.firstChild.childNodes[i].attributes.url;
         // -- abrir url al hacer clic
         holder_mc.onRelease = function() {
            getURL(this.url);
         };
         // -- incremento el valor de x para la siguiente imágen
         x += ancho;
         // -- incremento en 1 el número de columnas
         columna += 1;
         // -- ruptura de control, control de número de columnas
         if (columna == num_columnas) {
            columna = 0;
            x -= (ancho * num_columnas);
            y += alto;
         }
      }
   }
};
// -- cargar XML
//miXML.load("imagenes.xml");
miXML.load("imagenes.xml");


Codigo XML:

<?xml version="1.0" encoding="iso-8859-1"?>
<imagenes>
<imagen id="archivos/img01.jpg" url = "/archivos/img_01.jpg"/>
<imagen id="archivos/img02.jpg" url = "/archivos/img_02.jpg"/>
<imagen id="archivos/img03.jpg" url = "/archivos/img_03.jpg"/>
<imagen id="archivos/img04.jpg" url = "/archivos/img_04.jpg"/>
<imagen id="archivos/img05.jpg" url = "/archivos/img_05.jpg"/>
<imagen id="archivos/img06.jpg" url = "/archivos/img_06.jpg"/>
<imagen id="archivos/img07.jpg" url = "/archivos/img_07.jpg"/>
<imagen id="archivos/img08.jpg" url = "/archivos/img_08.jpg"/>
<imagen id="archivos/img09.jpg" url = "/archivos/img_09.jpg"/>
<imagen id="archivos/img10.jpg" url = "/archivos/img_10.jpg"/>
<imagen id="archivos/img11.jpg" url = "/archivos/img_11.jpg"/>
<imagen id="archivos/img12.jpg" url = "/archivos/img_12.jpg"/>
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<imagen id="archivos/img4107.jpg" url = "/archivos/img_4107.jpg"/>
<imagen id="archivos/img4108.jpg" url = "/archivos/img_4108.jpg"/>
<imagen id="archivos/img4109.jpg" url = "/archivos/img_4109.jpg"/>
<imagen id="archivos/img4110.jpg" url = "/archivos/img_4110.jpg"/>
<imagen id="archivos/img4111.jpg" url = "/archivos/img_4111.jpg"/>
<imagen id="archivos/img4112.jpg" url = "/archivos/img_4112.jpg"/>
<imagen id="archivos/img4113.jpg" url = "/archivos/img_4113.jpg"/>
<imagen id="archivos/img4114.jpg" url = "/archivos/img_4114.jpg"/>
<imagen id="archivos/img4115.jpg" url = "/archivos/img_4115.jpg"/>
<imagen id="archivos/img4116.jpg" url = "/archivos/img_4116.jpg"/>
</imagenes>

El corte del medio fue para no poner todo el XML



ALGUIEN TIENE ALGUNA IDEA DE COMO SOLUCIONO ESTO...???

MUCHAS GRACIAS

Por arielbaudry

2 de clabLevel



 

msie8
Citar            
MensajeEscrito el 23 Sep 2009 01:35 pm
Dada la cantidad de información, deberás considerar usar una base de datos o incluso, dado que parece ser una serie (archivos/img01.jpg a archivos/img4116.jpg) puedes simplemente cargar la cantidad de imágenes que debe cargar y luego usar un loop dentro de Flash

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 23 Sep 2009 01:51 pm

solisarg escribió:

Dada la cantidad de información, deberás considerar usar una base de datos o incluso, dado que parece ser una serie (archivos/img01.jpg a archivos/img4116.jpg) puedes simplemente cargar la cantidad de imágenes que debe cargar y luego usar un loop dentro de Flash

Jorge


Muchas gracias por tu aporte y tu respuesta, ahora me podras ayudar, porque se me complica. Tenes algun codigo de referencia ? Me seria de mucha utilidad.

Gracias...!!!

Por arielbaudry

2 de clabLevel



 

msie8
Citar            
MensajeEscrito el 23 Sep 2009 02:09 pm
En vez de toda la carga del XML, haces una loop de creación de este tipo:

Código ActionScript :

var total:Number = 4116
for (var i = 1; i<4116; i++) {
   // -- delaro una variable que recoje el atributo del nodo (nombre de la imagen)
   var nr:Number =(i<10)?"0"+1:i
   thumb = "archivos/img"+nr+".jpg"
   // -- creo un clip de película vacio  
   holder_mc = createEmptyMovieClip("holder_mc"+i, i+100);
   // -- creo un clip de película vacio  
   item = holder_mc.createEmptyMovieClip("diapo"+i, i+100);
   // --  cargo la imágen el clip vacio 
   item.loadMovie(thumb);
   // -- indico posición x - y 
   holder_mc._x = x;
   holder_mc._y = y;
   // -- se crea una variable que contiene la url correspondiente 
   holder_mc.url = "/"+thumb
   // -- abrir url al hacer clic 
   holder_mc.onRelease = function() {
      getURL(this.url);
   };
   // -- incremento el valor de x para la siguiente imágen 
   x += ancho;
   // -- incremento en 1 el número de columnas 
   columna += 1;
   // -- ruptura de control, control de número de columnas 
   if (columna == num_columnas) {
      columna = 0;
      x -= (ancho*num_columnas);
      y += alto;
   }
}


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 24 Sep 2009 12:21 am

solisarg escribió:

En vez de toda la carga del XML, haces una loop de creación de este tipo:

Código ActionScript :

var total:Number = 4116
for (var i = 1; i<4116; i++) {
   // -- delaro una variable que recoje el atributo del nodo (nombre de la imagen)
   var nr:Number =(i<10)?"0"+1:i
   thumb = "archivos/img"+nr+".jpg"
   // -- creo un clip de película vacio  
   holder_mc = createEmptyMovieClip("holder_mc"+i, i+100);
   // -- creo un clip de película vacio  
   item = holder_mc.createEmptyMovieClip("diapo"+i, i+100);
   // --  cargo la imágen el clip vacio 
   item.loadMovie(thumb);
   // -- indico posición x - y 
   holder_mc._x = x;
   holder_mc._y = y;
   // -- se crea una variable que contiene la url correspondiente 
   holder_mc.url = "/"+thumb
   // -- abrir url al hacer clic 
   holder_mc.onRelease = function() {
      getURL(this.url);
   };
   // -- incremento el valor de x para la siguiente imágen 
   x += ancho;
   // -- incremento en 1 el número de columnas 
   columna += 1;
   // -- ruptura de control, control de número de columnas 
   if (columna == num_columnas) {
      columna = 0;
      x -= (ancho*num_columnas);
      y += alto;
   }
}


Jorge



OK, buenisimo el aporte, lo unico que me esta dando un error output con el tema del nombre de archivo:

Error opening URL 'file:///D|/archivos/img.jpg'
Error opening URL 'file:///D|/archivos/img.jpg'
Error opening URL 'file:///D|/archivos/img.jpg'
Error opening URL 'file:///D|/archivos/img.jpg'
Error opening URL 'file:///D|/archivos/img.jpg'
etc etc etc

Sabes que puede ser?

Por arielbaudry

2 de clabLevel



 

msie8
Citar            
MensajeEscrito el 24 Sep 2009 10:53 am
Aquí parece que no toma nr, quita el cast, en AS2 igual no es obligatorio

var nr =(i<10)?"0"+1:i
thumb = "archivos/img"+nr+".jpg"

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 24 Sep 2009 05:43 pm
Muchas gracias por la respuesta, finalmente quedo asi:

// -- posición donde se cargará la primera imagen
x = 10;
y = 10;
// -- ancho y alto de la imagen más 5 pixeles de espacio
ancho = 33.8;
alto = 40;
// -- numero de columnas
num_columnas = 84;
// -- creo un nuevo objeto XML
var total:Number = 4116
for(var i = 1; i<4116; i++){

// -- delaro una variable que recoje el atributo del nodo (nombre de la imagen)
//var nr =(i<10)?"0"+1:i:
thumb = "http://misitioweb/archivos/4_img_"+i+".jpg";
// -- creo un clip de película vacio
holder_mc = createEmptyMovieClip("holder_mc"+i, i+100);

// -- creo un clip de película vacio
item = holder_mc.createEmptyMovieClip("diapo"+i, i+100);

// -- cargo la imágen el clip vacio
item.loadMovie(thumb);

// -- indico posición x - y
holder_mc._x = x;
holder_mc._y = y;

// -- se crea una variable que contiene la url correspondiente MUESTRO LAS IMAGENES EN TAMAÑO REAL
holder_mc.url = "http://misitioweb/images/usuarios/4_img_"+i+".jpg"

// -- abrir url al hacer clic POPUP
holder_mc.onRelease = function() {
getURL("javascript:NewWindow=window.open('"+this.url+"','FOTOS','width=320,height=240,left=100,top=100,toolbar=No,location=No,scrollbars=No,status=No,resizable=yes,fullscreen=No'); NewWindow.focus(); void(0);");
};

// -- incremento el valor de x para la siguiente imágen
x += ancho;

// -- incremento en 1 el número de columnas
columna += 1;

// -- ruptura de control, control de número de columnas
if (columna == num_columnas) {
columna = 0;
x -= (ancho*num_columnas);
y += alto;
}
}


Igual se cuelga un toque al inicio, creo que es porque son muchos archivos, ahora voy a ver si pongo una precarga y que tome las rutas de las imagenes desde un XML (4 lineas)

MUCHAS GRACIAS, ME DISTE UNA MANO GIGANTE...!!!!

Por arielbaudry

2 de clabLevel



 

msie7

 

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