Cristalab

Clase para cargar contenido externo en Actionscript 3

Por: Zguillez + 14.01.2008

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 Guiño

Etiquetas actionscript_3

Comentarios | Enviar un comentario
Sorpresa Util
Me gustaria saber como creas tus propias funciones de listeners.
ejemplo:

Código :

cosa.addEventListener(MisEventos.ALHACERALGO, hizoalgo);

Por: JaLeRu
excelente Bien
Por: eldervaz
Muy bueno Z! Thumbs up
Por: The Fricky!
Disculpa mis preguntas....

1- ¿los últimos 3 códigos van en el primer fotograma no, se crearia una pelicula por cada movieclip que queremos cargar?

2- ¿se puede modificar el diseño del preload?

3 - "es fácilmente extendible para crear otras clases más complejas con preloads o lo que sea..." ¿como más complejas, dinámicas, como youtube, pluggo, algo así?
Por: ojala_te_de_1_tiempillo_b
Thx Nice..
Por: kitano_blog
cada vez me gusta más esto, gracias Zguilles.
Por: Señor Oz_blog
JaleRu, lo hizo con la funcion
dispatchEvent(new Event(Contenedor.CARGADO));
Asi cuando la funcion registraContenido() termina, distribulle un nuevo evento asi para cuando alguien defina un nuevo evento
cont.addEventListener(Contenedor.CARGADO, listo);
este sera ejecutado cuando el evento se distribulla que es cuando la funcion registraContenido() acaba.

Bye.
Por: quien yo?_blog
Gracias, ya entendí...
Luego de muchos prueba y error.
Debía crear una variable estática y publica. Etc.. weno me da un poco de lata explicar. Riendo
Pero lo logre.
Por: JaLeRu
Deja un comentario
IMPORTANTE

Recuerda ser respetuoso, no insultes a otras personas, ni uses palabrotas, hay una persona al otro lado de la pantalla.

Habla bien, NO ESCRIBAS EN MAYUSCULA TODO, no escribas como en un SMS, evita cosas como "ke", "x q" y demás abreviaciones.

Aquí funcionan las etiquetas de los foros, puedes usar [b] para negrita, [img] para las imágenes, [url] para los enlaces, etc.

Si tienes preguntas técnicas, envíalas mejor al foro.