Comunidad de diseño web y desarrollo en internet online

Cargar múltiples XML a la vez

Citar            
MensajeEscrito el 02 Sep 2010 02:12 am
Buenas,

Necesito cargar varios XML a la vez y una vez cargados, recorrerlos todos desde una misma función.

Supongo q debería usar un array, pero la verdad es q me pierdo un poco y tampoco he encontrado buenos tutoriales por ahí, así q me preguntaba si me podríais ayudar.

Muchas gracias.

Por deskarrada

18 de clabLevel



 

chrome
Citar            
MensajeEscrito el 02 Sep 2010 05:55 am
BuenAS:

Si no te quieres complicar mucho y que después te sirva también para cargar otro tipo de assets:

Bulkloader

LoaderMax

La segunda library es, en dos palabras, im... presionante. Por cierto parece que últimamente sólo le hago publicidad a GreenSock :)

Ambas tienen en la documentación código de ejemplo de como se utilizan. Y en el segundo caso, LoaderMax, si los xml's lo que te sirven es para saber qué imagenes, sonidos, etc. hay que cargar también, tiene una clase XmlLoader a la que le das a cargar una serie de xml's con rutas a imágenes, mp3's, swf's, etc, y NO HAY QUE HACER NADA MÁS, se encarga de todo, y en el controlador del evento onComplete lo tendrás TODO: el xml, las imágenes, los sonidos, los swf's, además puedes comprobar el progreso de descarga del conjunto, por separado, detener la descarga... Lo que digo, impresionante :)

Un saludo.

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 02 Sep 2010 09:57 am
La verdad es q la segunda opción parece más completa q la primera y pinta muy, muy bien, pero he visto el tipo de licencia que tienen y, aunq gratuita, no permite que lo revendas como parte de tus trabajos q es, precisamente, lo que necesito yo. Si lo quiero vender, entonces sí me hacen pagar por ello.

El bulkloader, en cambio, permite ser revendido, así q me viene al pelo. Y, bueno, aunq no sea tan maravilloso como el otro, es mil veces mejor q hacerlo a mano... jejejejje.

Mil gracias por los links, promete mucho.

Por deskarrada

18 de clabLevel



 

chrome
Citar            
MensajeEscrito el 02 Sep 2010 12:23 pm
Ok, estoy usando bulkloader y es bastante sencillo, pero hay algo q se me resiste. Necesito cargar imágenes desde un XML.

De momento he cargado los xml con éxito, pero no se como acceder a sus nodos desde el bulkloader para recoger las urls de las imágenes a cargar.

Sabéis cómo hacerlo?

Por deskarrada

18 de clabLevel



 

chrome
Citar            
MensajeEscrito el 02 Sep 2010 12:46 pm
BuenAS:

Por eso te comentaba la opción GreenSock (la licencia básica son 25 dólares, y el 99% de los banners suelen tirar de TweenLite). Bulkloader ayuda bastante pero no tanto.

Cuando tengas los xml's cargados, utiliza el mismo Bulkloader -u otro si quieres diferenciar los procesos-, y añade ahora las imágenes cuya ruta, supongo, está en los nodos de los xml's.

Código ActionScript :

for each (var nodo:XML in xml.imagenes) {
   loader.add(nodo.url, {id:"imagen_" + i.toString()});
}
loader.start();


El proceso es el mismo, ahora en el controlador del evento onComplete tendrás a tu bulkloader con todas las imágenes.

Código ActionScript :

numImages = loader.totalItems;//no estoy seguro si es esta la propiedad que te da el número total de imágenes cargadas
for (var i:int=0; i < numImages; ++i) {
  arrayImagenes.push( loader.getBitmap("imagen_" + i.toString()));
}


Y en el array arrayImagenes tendrías tus imágenes cargadas. He escrito todo esto de memoria por lo que seguro tiene erratas. Si no quieres sacar por el momento las imágenes del bulkloader, puedes obtenerlo EN CUALQUIER PUNTO de tu aplicación a través del nombre que le diste al crearlo, con el método estático getLoader:

Código ActionScript :

BulkLoader.getLoader("nombreDadoAlCrearlo");



No sé si te has dado cuenta que cuando recuperas las imágenes puedes pasar como segundo parámetro true/false; en el primer caso eliminas la imagen del loader, y en el segundo la imagen sigue por si quieres obtenerla más tarde.

Un saludo.

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 02 Sep 2010 12:53 pm
Se me ha ocurrido hacer esto:

var backgroundImgUrl:String;
backgroundImgUrl = theXML.design.backgroundImg;
mainImgBulkloader.add(backgroundImgUrl, {id:"imgBackground"});

Pero supongo q debe existir otra forma más simple.

Se agradece cualquier idea al respecto.

Por deskarrada

18 de clabLevel



 

chrome
Citar            
MensajeEscrito el 02 Sep 2010 01:05 pm
BuenAS:

Si en el nodo del xml, theXML.design.backgroundImg está la ruta de la imagen, ese es el proceso; ahora bien, imagino que no quieres cargar solo una imagen, por eso lo de utilizar un for each que recorra los nodos del xml y vaya añadiendo todas las rutas de tu xml.

Si estás cargando un xml para leer sólo la ruta de una imagen(o de un par), es casi mejor que le pases al swf dicha ruta a través de html y te ahorras cargar el xml.

Un saludo

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 03 Sep 2010 12:41 am
No, no, el xml tengo q cargarlo porq de ahí cojo muchas cosas.

Al final lo he hecho como decía y, bueno, funciona y tp se queda muy enguarrado el código.

Ahora me he estancado con un bucle for q necesito hacer q el nombre de la var menuItemImgBulkloader:BulkLoader cambie dinámicamente para q en cada vuelta del bucle for tenga un nombre de instancia distinto y no de error por intentar crear varias instancias con el mismo nombre.

Por deskarrada

18 de clabLevel



 

chrome
Citar            
MensajeEscrito el 03 Sep 2010 12:58 am

Lukánicos escribió:

BuenAS:

Por eso te comentaba la opción GreenSock (la licencia básica son 25 dólares, y el 99% de los banners suelen tirar de TweenLite). Bulkloader ayuda bastante pero no tanto.

Cuando tengas los xml's cargados, utiliza el mismo Bulkloader -u otro si quieres diferenciar los procesos-, y añade ahora las imágenes cuya ruta, supongo, está en los nodos de los xml's.

Código ActionScript :

for each (var nodo:XML in xml.imagenes) {
   loader.add(nodo.url, {id:"imagen_" + i.toString()});
}
loader.start();


El proceso es el mismo, ahora en el controlador del evento onComplete tendrás a tu bulkloader con todas las imágenes.

Código ActionScript :

numImages = loader.totalItems;//no estoy seguro si es esta la propiedad que te da el número total de imágenes cargadas
for (var i:int=0; i < numImages; ++i) {
  arrayImagenes.push( loader.getBitmap("imagen_" + i.toString()));
}


Y en el array arrayImagenes tendrías tus imágenes cargadas. He escrito todo esto de memoria por lo que seguro tiene erratas. Si no quieres sacar por el momento las imágenes del bulkloader, puedes obtenerlo EN CUALQUIER PUNTO de tu aplicación a través del nombre que le diste al crearlo, con el método estático getLoader:

Código ActionScript :

BulkLoader.getLoader("nombreDadoAlCrearlo");



No sé si te has dado cuenta que cuando recuperas las imágenes puedes pasar como segundo parámetro true/false; en el primer caso eliminas la imagen del loader, y en el segundo la imagen sigue por si quieres obtenerla más tarde.

Un saludo.


Man, I didnt saw your answer till now, how could I missed it? It's long enough to being seen :)

I think I'm going to try the LoaderMax, now that I've a better idea of what bulkloader is capable of, and then if LoaderMax gives me much power I'll buy the licence.

Thanks a lot for everything.

Por deskarrada

18 de clabLevel



 

chrome
Citar            
MensajeEscrito el 03 Sep 2010 01:09 am
Perdooooooon!!! Sin querer me paso al inglés porq estoy nevegando todo el día por webs en inglés y lo q suelo postear es en inglés y justo antes te he contestado en inglés en vez de en español... No me doy ni cuenta, q empanao.

El caso es q te decía q iba a probar el LoaderMax, pero al ver el coste de la licencia q necesitaría me he echado atrás.... 150USD al año..., buffff, me parece un pastón para algo q, aunq no tan potente, puedo tener gratis.

Así q por desgracia, me quedo con bulkloader.

Ale, a seguir peleándome.

Por deskarrada

18 de clabLevel



 

chrome

 

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