Cargar XML en un componente List en Actionscript 3

Posted by admin | AS3, Avanzado, Class | Thursday 23 October 2008 10:01 am

Este es un ejemplo de clase que extiende el componente List de Flash y le añade la posibilidad de cargar el contenido desde un archivo XML externo.

Este ejemplo de clase surguió a partir de optimizar un clase que me mostró penHolder en Cristalab. Aqui pueden ver su codigo y el post original.

Basicamente mi aporte fue hacer que la clase extendiese de List para no tener que crear una instancia del componente y pasarla como parametro a otra clase, ya que nuestra intención es crear un mismo componete List pero que contenga unos metodos ampliados, en este caso que contewnga un metodo para cargar los datos desde un archivo XML.

package
{
   import fl.controls.List;
   import fl.data.DataProvider;
   import flash.net.URLRequest;
   import flash.net.URLLoader;
   import flash.events.Event;
   //------------------------------------
   public class FillList extends List
   {
      private var _xml:XML;
      //------------------------------------
      public function FillList():void   {   }
      //------------------------------------
      public function setData(url:String):void
      {
         var request:URLRequest = new URLRequest(url);
         var loader:URLLoader = new URLLoader();
         loader.load(request);
         loader.addEventListener(Event.COMPLETE, xmlLoaded);
      }
      private function xmlLoaded(e:Event):void
      {
         _xml = new XML(e.target.data);
         dataProvider = new DataProvider(_xml);
      }
      //------------------------------------
   }
}

Para crear la instacia colocariamos este codigo enb la clase Main:

package 
{
   import flash.display.MovieClip;
   import fl.controls.List;
   import FillList;
   //------------------------------------
   public class Main extends MovieClip
   {
      private var bofhList:FillList;
   //------------------------------------
      public function Main()
      {
         bofhList = new FillList();
         bofhList.setData("datos.xml");
         bofhList.setSize(150,200);
         bofhList.move(10,10);
         addChild(bofhList);
      }
   //------------------------------------
   }
}

Comparte:
  • Meneame
  • Twitter
  • Facebook
  • Google Bookmarks
  • del.icio.us
  • Technorati
  • email
  • Print

Post relacinonados:

  1. Clase para cargar contenido externo en Actionscript 3
  2. Asignar una clase ActionScript 3 a un itemRenderer en Flex
  3. onReleaseOutside, onDragOut, onDragOver en ActionScript 3
  4. Comunicación entre clases Actionscript 3 con EventDispatcher
  5. Añadir funciones al teclado con Actionscript 3

4 Comments »

  1. Comment by pH — 3 November, 2008 @ 4:33 pm

    ya lo sabes... _O_

  2. Comment by www.hoteles-almeria.com — 14 November, 2008 @ 5:25 am

    Muy buen ejemplo, pero si quisieramos cargar un titlelist y se encuentra en otro moveclip como seria la llamada para la carga de la data:
    ¿?

  3. Comment by admin — 14 November, 2008 @ 12:04 pm

    @H-A: La carga de los datos no varia por la posición del titleList... Con la función "xmlLoaded" guardas los datos en una variable "_xml " únicamente has de acceder a esa variable a través de un setter para clocarlo donde te interese.

  4. Comment by Nico — 1 April, 2010 @ 2:43 pm

    Parese bueno, pero no logro cargar el xml... siempre me devuelve un error...
    1017: No se encontró la definicón de la clase base List.

    Que puede estar fallando?

    NIco

RSS feed for comments on this post. TrackBack URI

Leave a comment

Get Adobe Flash playerPlugin by wpburn.com wordpress themes