Comunidad de diseño web y desarrollo en internet

Clase para cargar contenido externo en Actionscript 3

Esta es una clase que tengo escrita para reutilizar y ahorrarme el tiempo de escribir el mismo código una y otra vez, se trata de una clase para cargar contenido externo.

La clase lo único que hace es cargar el contenido con un Loader y guardar una referencia. También dispara un evento cuando la carga se ha realizado para poder detectarlo desde fuera de la clase.

Esta es la clase:

Código :

package com.zguillez.display
{
   import flash.display.Sprite;
   import flash.display.Loader;
   import flash.net.URLRequest;
   import flash.events.Event;
   import flash.events.EventDispatcher;
   //-----------------------------------------
   public class Contenedor extends Sprite
   {
      public static  var CARGADO:String = "cargado";
      private var _clip:Sprite = new Sprite();
      private var _cargado:Boolean = false;
      private var _content:Sprite;
      private var _urlAsset:String;
      //-----------------------------------------
      public function Contenedor(asset:String=null)
      {
         _urlAsset = asset;
         if (_urlAsset != null) {
            iniLoad();
         }
      }
      //-----------------------------------------
      private function iniLoad(asset:String=null):void
      {
         var loader:Loader = new Loader();
         var request:URLRequest = new URLRequest(_urlAsset);
         loader.load(request);
         var dispatcher:EventDispatcher = loader.contentLoaderInfo;
         dispatcher.addEventListener(Event.INIT, registraContenido);
         addChild(loader);
      }
      //-----------------------------------------
      public function set asset(a:String):void
      {
         if (_urlAsset != null) {
            removeChild(_clip);
         }
         _urlAsset = a;
         iniLoad();
      }
      //-----------------------------------------
      public function get clip():Sprite
      {
         return _clip;
      }
      public function get cargado():Boolean
      {
         return _cargado;
      }
      //-----------------------------------------
      public function registraContenido(e:Event):void
      {
         _cargado = true;
         _clip = e.target.content;
         dispatchEvent(new Event(Contenedor.CARGADO));
      }
      //-----------------------------------------
   }
}


Su uso es muy simple:

Código :

import com.zguillez.display.Contenedor;

var cont:Contenedor = new Contenedor();
cont.asset = "pelicula.swf"

Y para detectar la carga completa:

Código :

cont.addEventListener(Contenedor.CARGADO, listo);
function listo(e:Event):void
{
   trace("carga lista")
}

Hay que decir que tambien tiene la posibilidad de cambiar el contenido simplemente asignandole otra ruta:

Código :

cont.asset = "pelicula2.swf"

Es una clase muy simple pero que me resulta útil y es fácilmente extendible para crear otras clases más complejas con preloads o lo que sea...
Espero que tambien les resulte útil ;)

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Publica tu comentario

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate