Foros del Web » Creando para Internet » Flash y Actionscript »

Problea labelField y dataProvider

Estas en el tema de Problea labelField y dataProvider en el foro de Flash y Actionscript en Foros del Web. Realmente no tengo muy claro si me pregunta va aqui...asi que si no es el mejor lugar movedmelo. Bueno la cosa es que desde hace ...
  #1 (permalink)  
Antiguo 30/04/2010, 09:20
 
Fecha de Ingreso: febrero-2010
Mensajes: 10
Antigüedad: 14 años, 3 meses
Puntos: 0
Problea labelField y dataProvider

Realmente no tengo muy claro si me pregunta va aqui...asi que si no es el mejor lugar movedmelo.
Bueno la cosa es que desde hace poco estoy trabajando con Flex Builder 3 y programando mediante MXML y ActionScript 3 y estoy en un proyeco atascadisimo.

Tengo dos listas en las que quiero que se muestre una serie de informacion sacada de un XML externo mediante el objeto HTTPService. Es un sistema de muestra de informacion de unos LPs. En la primera lista se carga el nombre de los artistas y al seleccionar en uno de ellos he hecho mediante el evento change() que complete unos text en los cuales se muestren artista-disco-genero y discografica y me gustaria que en la segunda lista cargase un array de canciones correspondiente a cada disco. Basicamente utilizo la propiedad list.labelField para cargar cada informacion en los text pero no se porque no me termina de cargar el array de canciones.
La estructura del XML es asi como

<disco>
<artista></artista>
<canciones>
<t>track1</t>
<t>track2</t>
</canciones>
</disco>

Me han dicho que deberia utilizar un identificador, pero realmente no se si para cada disco o para el nodo de canciones y a demas tampoco se como lo podria vincular a la segunda lista, tambien mediante un labelField?

Espero ayuda y muchas gracias
  #2 (permalink)  
Antiguo 30/04/2010, 10:01
Avatar de Bandit
Moderador
 
Fecha de Ingreso: julio-2003
Ubicación: Lima - Perú
Mensajes: 16.726
Antigüedad: 20 años, 10 meses
Puntos: 406
Respuesta: Problea labelField y dataProvider

Movido al Foro de Flex desde ActionScript.
__________________
Bandit.
Si no sabes estudia y si sabes enseña.
http://www.banditwebdesign.com/
  #3 (permalink)  
Antiguo 01/05/2010, 21:48
Avatar de jahepi
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Querétaro
Mensajes: 1.124
Antigüedad: 19 años, 4 meses
Puntos: 43
Respuesta: Problea labelField y dataProvider

Hola gorkamu89 !

Ahorita no me voy a meter en la dudas del labelField, quiero ver la parte de como obtienes y generas los datos.

Te propongo esta solución que es más intuitiva, la idea es que a partir de los archivos XML generar colecciones de objetos del tipo Disco, teniendo estos datos te será más sencillo generar la parte gráfica.

Por ejemplo, tenemos la siguiente estructura en el XML:
Código XML:
Ver original
  1. <discos>
  2.  
  3.     <disco>
  4.     <artista>Artista 1</artista>
  5.     <canciones>
  6.         <t>track1</t>
  7.         <t>track2</t>
  8.     </canciones>
  9.     </disco>
  10.    
  11.     <disco>
  12.     <artista>Artista 2</artista>
  13.     <canciones>
  14.         <t>track1</t>
  15.         <t>track2</t>
  16.     </canciones>
  17.     </disco>
  18.  
  19.     <disco>
  20.     <artista>Artista 3</artista>
  21.     <canciones>
  22.         <t>track1</t>
  23.         <t>track2</t>
  24.     </canciones>
  25.     </disco>
  26.  
  27. </discos>

Ahora si generamos nuestra clase Disco que encapsulará toda la información genérica:

Código actionscript:
Ver original
  1. package {
  2.  
  3.     public class Disco
  4.     {
  5.         private var artista:String
  6.         private var canciones:Array;
  7.    
  8.         public function Disco(artista:String)
  9.         {
  10.             this.artista = artista;
  11.             canciones = new Array();
  12.         }
  13.        
  14.         public function agregarCancion(cancion:String):void
  15.         {
  16.             canciones.push(cancion);
  17.         }
  18.        
  19.         public function obtenerCancion(index:int):String
  20.         {
  21.             return canciones[index];
  22.         }
  23.    
  24.         public function numeroCanciones():int
  25.         {
  26.             return canciones.length;
  27.         }
  28.        
  29.         public function obtenerArtista():String
  30.         {
  31.             return artista;
  32.         }
  33.     }
  34. }

La clase contiene como atributos el nombre del artista y la lista de canciones, puedes preguntarle a la clase por el número de canciones, por determinada canción, etc.

Ahora la idea es generar instancias de esta clase con la ayuda del XML:
Código actionscript:
Ver original
  1. package {
  2.    
  3.     import flash.events.Event;
  4.     import flash.net.URLRequest;
  5.     import flash.net.URLLoader;
  6.    
  7.     public class Main
  8.     {
  9.         public static function main():void
  10.         {
  11.             var loader:URLLoader = new URLLoader();
  12.             loader.load(new URLRequest("discos.xml"));
  13.             loader.addEventListener(Event.COMPLETE, Main.materializar);
  14.         }
  15.        
  16.         private static function materializar(evt:Event):void
  17.         {
  18.             var discosCol:Array = new Array();         
  19.             var xml:XML = new XML(evt.target.data);
  20.             var discos:XMLList = xml.disco;
  21.             for each (var disco:XML in discos) {
  22.                 var discoObj:Disco = new Disco(disco.artista);
  23.                 var canciones:XMLList = disco.canciones;
  24.                 for each (var cancion:XML in canciones.children()) {
  25.                     discoObj.agregarCancion(cancion);
  26.                 }
  27.                 discosCol.push(discoObj);
  28.             }
  29.         }
  30.     }
  31. }

La variable discosCol contiene todos los objetos Disco, estos los tendrás disponibles dentro de la aplicación, con esta información puedes generar tus lista de artistas así como mostrar las canciones de ese artista, solo falta meterle talacha a la parte de presentación (MXML).

Un saludote !
__________________
Una contraseña es como la ropa interior. No deberías dejarlas afuera a la vista de otras personas, deberías cambiarla regularmente, y ni se te ocurra prestarla a extraños.
  #4 (permalink)  
Antiguo 02/05/2010, 08:20
 
Fecha de Ingreso: febrero-2010
Mensajes: 10
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Problea labelField y dataProvider

Muchas gracias jahepi la verdad es que no entiendo mucho el codigo porque llevo 2 semanas con actionscript y mxml pero prometo que lo estudiaré ;) un saludo

Etiquetas: flex
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:24.