Ver Mensaje Individual
  #5 (permalink)  
Antiguo 17/11/2007, 01:04
Avatar de yoseman
yoseman
 
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 20 años, 5 meses
Puntos: 5
Re: problema con xml externo

Hola,

Tál y cómo te dije he montado un ejemplillo cogiendo cosillas que ya tenía hechas de aquí y de allá.

Básicamente lo que hace el ejemplo es recoger los datos de un xml(video.xml)

este es el xml
Código PHP:
<?xml version="1.0" encoding="utf-8"?>
<listado>
    <videos>
        <titulo>titulovideo 1</titulo>
        <imagen>imagen_asoaciada1.jpg</imagen>
        <archivo>video1.flv</archivo>
    </videos>
    <videos>
        <titulo>titulovideo 2</titulo>
        <imagen>imagen_asoaciada2.jpg</imagen>
        <archivo>video2.flv</archivo>
    </videos>
    <videos>
        <titulo>titulovideo 3</titulo>
        <imagen>imagen_asoaciada3.jpg</imagen>
        <archivo>video3.flv</archivo>
    </videos>
    <videos>
        <titulo>titulovideo 4</titulo>
        <imagen>imagen_asoaciada4.jpg</imagen>
        <archivo>video4.flv</archivo>
    </videos>
</listado>
Este es el código del fla:
Código PHP:
import fl.video.FLVPlayback;
import flash.display.Sprite;
import flash.display.Loader;
import flash.events.*;
import flash.net.URLRequest;

var 
loader:Loader = new Loader();
var 
container:Sprite = new Sprite();
container.name "container";
addChild(container);       
container.x=357;
container.y=170;    
            
var 
miXML:XML = new XML();
var 
XML_URL:String "video.xml";
var 
miXMLURL:URLRequest = new URLRequest(XML_URL);
var 
myLoader:URLLoader = new URLLoader(miXMLURL);
myLoader.addEventListener("complete"xmlLoaded);

datagr.rowCount 4;
datagr.columns = ["Titulo"];
datagr.addEventListener(Event.CHANGEgridItemSelected);

function 
xmlLoaded(event:Event):void
{
    
datagr.selectedIndex=0;
    
miXML XML(myLoader.data);
    
listaRepro(miXML.videos[0].archivo);
    
cargador(miXML.videos[0].imagen);
    for(var 
l:Number 0;l<(miXML.descendants("videos").length());l++)
    {
        var 
titulo:String=(miXML.videos[l].titulo); 
        var 
sampleItem1:Object = { Titulo:titulo};
        
datagr.addItem(sampleItem1);
    }


}

function 
listaRepro(peli:String
{
     
    
player.source peli;
    
player.skinBackgroundColor 0x666666;
    
player.skinBackgroundAlpha 0.5;
    
player.load(peli);
    
player.play();


function 
gridItemSelected(e:Event):void 
{
    
listaRepro(miXML.videos[e.target.selectedIndex].archivo)   
    
cargador(miXML.videos[e.target.selectedIndex].imagen);
}

function 
cargador(imagen:String
{
           
loader.unload();
            
loader.contentLoaderInfo.addEventListener(Event.COMPLETEcompleteHandler);

            var 
request:URLRequest = new URLRequest(imagen);
            
loader.load(request);

            
container.addChild(loader);
            
}

function 
completeHandler(event:Event):void 
{
    
trace("imagen cargada")

Una vez recogidos, lo primero que hace es seleccionar el primer item del datagrid,reproducir el primer video de tu xml y colocar tu primera imagen en un container que defino y posiciono por código.

Y lo demás ya lo controla el evento gridItemSelected del datagrid, cogemos el selectedIndex y lo pasamos a las funciones de carga de imagen y de carga de video.

Por cierto que está con cs3 y mi experiencia en actionscript 3 es limitada, asi que no sé si hay cosillas que se podrían hacer mejor o más fácil.

Seguro que sí...

El ejemplo colgado está aquí

Y los archivos aqui:

Supongo que con esto ya lo puedes retocar a tu gusto...

Salu2 ;)

PD (En el fla que he subido a lo mejor hay algunos imports de más que se me ha olvidado quitar)
__________________
[+]
[+]

Última edición por yoseman; 17/11/2007 a las 01:10