Ver Mensaje Individual
  #2 (permalink)  
Antiguo 18/11/2007, 18:31
Avatar de yoseman
yoseman
 
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 20 años, 4 meses
Puntos: 5
Re: cargar imagenes desde XML en AS3

Xml(repito las imagenes por no reescalar otras...)

Código PHP:
<?xml version="1.0" encoding="utf-8"?>
<listado>
    <imagenes>
        <imagen>imagen_asoaciada1.jpg</imagen>
    </imagenes>
    <imagenes>
        <imagen>imagen_asoaciada2.jpg</imagen>
    </imagenes>
    <imagenes>
        <imagen>imagen_asoaciada3.jpg</imagen>
    </imagenes>
    <imagenes>
        <imagen>imagen_asoaciada4.jpg</imagen>
    </imagenes>
    <imagenes>
        <imagen>imagen_asoaciada1.jpg</imagen>
    </imagenes>
    <imagenes>
        <imagen>imagen_asoaciada2.jpg</imagen>
    </imagenes>
    <imagenes>
        <imagen>imagen_asoaciada3.jpg</imagen>
    </imagenes>
    <imagenes>
        <imagen>imagen_asoaciada4.jpg</imagen>
    </imagenes>
    <imagenes>
        <imagen>imagen_asoaciada1.jpg</imagen>
    </imagenes>
    <imagenes>
        <imagen>imagen_asoaciada2.jpg</imagen>
    </imagenes>
    <imagenes>
        <imagen>imagen_asoaciada3.jpg</imagen>
    </imagenes>
    <imagenes>
        <imagen>imagen_asoaciada4.jpg</imagen>
    </imagenes>
    <imagenes>
        <imagen>imagen_asoaciada2.jpg</imagen>
    </imagenes>
    <imagenes>
        <imagen>imagen_asoaciada3.jpg</imagen>
    </imagenes>
    <imagenes>
        <imagen>imagen_asoaciada4.jpg</imagen>
    </imagenes>
</listado>
Código PHP:
import flash.display.Sprite;
import flash.display.Loader;
import flash.events.*;
import flash.net.URLRequest;

var 
ocultarHastaCargarTodas:Boolean = new Boolean(true)
    
var 
contenedorImagenes:Sprite = new Sprite();
contenedorImagenes.visible=ocultarHastaCargarTodas;
contenedorImagenes.x=0;
contenedorImagenes.y=0;  

addChild(contenedorImagenes);    

var 
miXML:XML = new XML();
var 
XML_URL:String "imagenes.xml";
var 
miXMLURL:URLRequest = new URLRequest(XML_URL);
var 
myLoader:URLLoader = new URLLoader(miXMLURL);
myLoader.addEventListener("complete"xmlLoaded);
var 
imagenActual:Number 0;
var 
imagenTotal:Number 0;
var 
ancho:Number 165;
var 
alto:Number 145;
var 
inicioX:Number 0;
var 
inicioY:Number 0;
var 
ImagenesPorFila:Number =5;



function 
xmlLoaded(event:Event):void
{
    
miXML XML(myLoader.data);
    
imagenTotal=miXML.descendants("imagenes").length();
    
cargador();
}


function 
cargador() 
{
    var 
loader:Loader = new Loader();
    
loader.contentLoaderInfo.addEventListener(Event.COMPLETEcompleteHandler);
    var 
request:URLRequest = new URLRequest(miXML.imagenes[imagenActual].imagen);
    
loader.load(request);
    
loader.x=inicioX+ancho*(imagenActual%ImagenesPorFila);
    
loader.y=inicioY+alto*Math.floor(imagenActual/ImagenesPorFila);    
    
contenedorImagenes.addChildAt(loader,imagenActual);             
}

function 
completeHandler(event:Event):void 
{
    
imagenActual++;
    if(
imagenActual<imagenTotal)
    {
        
cargador();
    }
    else
    {
        
contenedorImagenes.visible=true;
        var 
loader:Loader = new Loader();
        
loader.unload();
    }

Ponemos todas las clases a utilizar

Definimos un nuevo Sprite contenedorImagenes en 0,0.

Definimos ancho, alto, inicioX, inicioY, ImagenesPorFila, el objeto xml y la url a cargar, y también imagen actual que ponemos a 0.

A la carga del xml registramos el total de imágenes de nuestro xml en imagenTotal y llamamos por primera vez a cargador.

Cargador recibe que tiene que cargar la imagen actual(0), la carga con addChildAtt en el índice 'imagenActual'(para ir cargando cada una en un índice distinto) de contenedorImagenes.

Y el evento de complete del cargador incrementa imagenActual y vuelve a llamar a cargador si la imagen actual es menor que imagenTotal.

De momento no me aclaro mucho con actionscript 3.0, pero creo qué más o menos es asi
__________________
[+]
[+]

Última edición por yoseman; 18/11/2007 a las 18:49