Siguiendo con los tutoriales básico de ActionScript 3, me pareció interesante mostrarles como cargar un SWF externo en AS3.
Un recurso muy utilizado a la hora de armar una página o una aplicación en Flash.
El proceso a seguir es medianamente similar a lo que era usar MovieClipLoader en ActionScript 2, pero obviamente cambiando la sintaxis.
Lo bueno que tiene AS3 es que todo se maneja de manera similar a través de los Listeners, por lo que hace la programación bastante intuitiva a la hora de empezar si uno no conoce todos los elementos que AS3 nos da para trabajar.
Bien comencemos…
La clase que se utiliza en AS3 para cargar tanto SWF como JPG externos, es la clase Loader que está en el paquete flash.display.
Lo primero que hay q hacer es instanciar esta clase. Obviamente si la usamos en una clase personal hay que importar la clase de la siguiente manera (desde el código de un fla no hace falta):
Actionscript:
-
import flash.display.Loader;
una vez importada la clase pasamos a generar la instancia y los Listenersnecesarios para manejar nuestra carga externa.
Actionscript:
-
var loader:Loader = new Loader();
-
loader.contentLoaderInfo.addEventListener(Event.OPEN, onOpen);
-
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgress);
-
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
Es importante destacar que los Listenes no se le agregan al loader, sino al contenidos del mismo… para saber cuándo se abrió, cuando se está cargando y cuando se termina de cargar el contenido. Por eso se escribe elcontentLoaderInfo.
Esa es una de las diferencias con el URLLoader (además de que el mismo se usa para cargar datos y no JPG o SWF).
También es importante aclarar que se podría agregar otro Listener con elEvent.INIT, que lo que hace es “escuchar” cuando la película se comienza a iniciar.
Lo siguiente a hacer es indicarle que queremos cargar a nuestro objetoLoader. Lo hacemos de la siguiente manera:
Actionscript:
-
loader.load(new URLRequest(”peliculaExterna.swf”));
Usamos URLRequest para indicar que swf o jpg queremos cargar. Para ellos si estamos creando una clase deberiamos importar la clase URLRequest, que esta en el paquete flash.net.URLRequest
Lo último que nos quedaría hacer es definir las funciones que son llamadas por los Listener, cosa que vamos a hacer a continuación. Atención a los comentarios:
Actionscript:
-
function onOpen(e:Event):void
-
{
-
// Aquí iría tu código cuando se inicia la carga… Podrías mostrar un cargador por ejemplo.
-
}
-
-
function onProgress(e:ProgressEvent):void
-
{
-
// Aquí podrías obtener el porcentaje de tú cargar y mostrárselo al usuario… una buena forma seria así:
-
// var porcentaje:Number = e.bytesLoaded/e.bytesTotal * 100;
-
// y mostrar la variable “porcentaje” en donde quieras.
-
}
-
-
function onComplete(e:Event):void
-
{
-
// Aquí podrías sacar el cargador y añadir el objeto cargado a la película de la siguiente forma:
-
// addChild(loader);
-
}
Lo mismo que con Loader y URLRequest, si estamos haciendo una clase importar las clases de eventos. En este caso serian flash.events.Event yflash.events.ProgressEvent o simplificar las dos en una linea así: flash.events.*
Con este código entonces podríamos cargar tanto SWF como JPG. Obviamente variarían algunas cosas, como que hacer con el objeto cargado, pero esta es una buena base para que sigan investigando.
El código completo:
Actionscript:
-
import flash.display.Loader;
-
import flash.events.*;
-
import flash.net.URLRequest;
-
-
var loader:Loader = new Loader();
-
loader.contentLoaderInfo.addEventListener(Event.OPEN, onOpen);
-
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgress);
-
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
-
-
loader.load(new URLRequest(”peliculaExterna.swf”));
-
-
function onOpen(e:Event):void
-
{
-
// Aquí iría tu código cuando se inicia la carga… Podrías mostrar un cargador por ejemplo.
-
}
-
-
function onProgress(e:Event):void
-
{
-
// Aquí podrías obtener el porcentaje de tú cargar y mostrárselo al usuario… una buena forma seria así:
-
// var porcentaje:Number = e.bytesLoaded/e.bytesTotal * 100;
-
// y mostrar la variable “porcentaje” en donde quieras.
-
}
-
-
function onComplete(e:Event):void
-
{
-
// Aquí podrías sacar el cargador y añadir el objeto cargado a la película de la siguiente forma:
-
// addChild(loader);
-
}
Espero les sirva como siempre digo, y espero comentarios, preguntas y sugerencias!
Saludos!
le agradesemos a http://www.DeCabeza.net por los textos
Popularity: 7% [?]