¿Quieres registrarte?

Clase para cargar contenido externo en Actionscript 3

Por: Zguillez
14 de Enero del 2008
7273 de clabLevel
Otros artículos de Zguillez
10,778 visitas

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 ;)

Enviar a twitter Enviar a facebook


También te interesa


Etiquetas actionscript_3

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

Código :

cosa.addEventListener(MisEventos.ALHACERALGO, hizoalgo);

Por: JaLeRu
excelente (Y)
Por: eldervaz
Muy bueno Z! (y)
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. xD
Pero lo logre.
Por: JaLeRu
soy bruto, no puedo verlo, me da muchos prueba y error.
Por: emanuel-blog
¿¿Como le hago para que regrese el porcentaje cargado y mueva un movieClip segun se carga y asi bonito??
Por: anahi-blog
Hola

soy nuevo en esto

He hecho todo pero no se si deba crear una instancia con algun nombre o ¿como se ve dentro del fla que estoy trabajando el archivo externo?
Por: XseptiKo-blog
Hola, gracias por el ejemplo, soy nuevo con actionscript 3.0 y queria saber si me puedes ayudar con la asignacion de niveles para los movieclips que e cargado con esa clase.
Por: h_multimedia
Hola soy nuevo en esto y quisiera saber si puedes subir el ejemplo, para entender mejor ya que lo trate de hacer y no me resulta, o talves hay algun lugar donde bajarestos ejemplos
Por: Cesar Flores-blog
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.