#1 Flash: Cargar swf externo - aleatorio
Hola que tal, tengo creado un swf "header" que llama a otro swf externo "carga" que solamente tiene una rutina que va cargando aleatoriamente los swf "pub1" "pub2" etc...
En el frame 160 del header tengo este código:
El archivo carga contiene este código en el 1er frame:
//Importo las clases necesarias
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.*;
import flash.net.URLRequest;
//Carga la imagen
function CargarSwf(url) {
//Creo el objeto cargador
var loader:Loader = new Loader();
//Le añado los listeners
ponerListeners(loader.contentLoaderInfo);
//Creo el objeto que contendrá la petición
var peticion:URLRequest = new URLRequest(url);
//Cargo la petición
loader.load(peticion);
}
//Añade los listeners al cargador
function ponerListeners(dispatcher:IEventDispatcher):void {
dispatcher.addEventListener(Event.COMPLETE, completeHandler);
dispatcher.addEventListener(HTTPStatusEvent.HTTP_S TATUS, httpStatusHandler);
dispatcher.addEventListener(Event.INIT, initHandler);
dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
dispatcher.addEventListener(Event.OPEN, openHandler);
dispatcher.addEventListener(ProgressEvent.PROGRESS , progressHandler);
}
//Funcion que se ejecuta cuando termina la descarga.
function completeHandler(event:Event):void {
trace("completeHandler: " + event);
addChild(event.target.content);
}
//Se ejecuta al recibir un código de estado HTTP
function httpStatusHandler(event:HTTPStatusEvent):void {
trace("httpStatusHandler: " + event);
}
//Se distribuye cuando las propiedades del objeto cargado están disponibles
//A partir de su distribucion podriamos modificar el objeto (ancho, escala, etc)
function initHandler(event:Event):void {
trace("initHandler: " + event);
}
//Se ejecuta cuando hay un error de entrada/salida, por ejemplo, al intentar cargar un
//archivo inexistente
function ioErrorHandler(event:IOErrorEvent):void {
trace("ioErrorHandler: " + event);
}
//Se ejecuta cuando comienza la operación de carga
function openHandler(event:Event):void {
trace("openHandler: " + event);
}
//Se ejecuta periodicamente mientras dura la carga
function progressHandler(event:ProgressEvent):void {
trace("progressHandler: bytesLoaded=" + event.bytesLoaded + " bytesTotal=" + event.bytesTotal);
}
//Empezamos
CargarSwf("http://www.vendamoshoy.com/home/templates/ja_shopping_ii/publicidad/pub"+Math.ceil(Math.random()*3)+".swf");
Ok. Hasta ahí funciona todo bien. lo que yo quiero hacer es que vaya cambiando de archivo cuando termina la película. Hasta ahora lo que pude hacer es tener todos los swf "pub.." de la misma cantidad de frames y en el archivo header le sumo esa cantidad de frames desde que lo cargo y llamo a este código:
this.removeChild(contenedor); //elimino el clip anterior
gotoAndPlay(160); //cargo otro
El problema viene cuando tenga que cargar algun swf con mayor cantidad de frames ya que el this.removeChild(contenedor) me cortaría la película..
Estuve viendo que en el último frame de todos los archivos "pub.." se podría eliminar el contenedor y volver al frame 160 del header por medio de _parent pero no se como se usa..
Alguna otra solución?..
Gracias..
En el frame 160 del header tengo este código:
var contenedor = new Loader();
contenedor.load(new URLRequest("http://www.vendamoshoy.com/home/templates/ja_shopping_ii/carga.swf"));
addChild(contenedor);
contenedor.x = 545
contenedor.y=5
contenedor.load(new URLRequest("http://www.vendamoshoy.com/home/templates/ja_shopping_ii/carga.swf"));
addChild(contenedor);
contenedor.x = 545
contenedor.y=5
El archivo carga contiene este código en el 1er frame:
//Importo las clases necesarias
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.*;
import flash.net.URLRequest;
//Carga la imagen
function CargarSwf(url) {
//Creo el objeto cargador
var loader:Loader = new Loader();
//Le añado los listeners
ponerListeners(loader.contentLoaderInfo);
//Creo el objeto que contendrá la petición
var peticion:URLRequest = new URLRequest(url);
//Cargo la petición
loader.load(peticion);
}
//Añade los listeners al cargador
function ponerListeners(dispatcher:IEventDispatcher):void {
dispatcher.addEventListener(Event.COMPLETE, completeHandler);
dispatcher.addEventListener(HTTPStatusEvent.HTTP_S TATUS, httpStatusHandler);
dispatcher.addEventListener(Event.INIT, initHandler);
dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
dispatcher.addEventListener(Event.OPEN, openHandler);
dispatcher.addEventListener(ProgressEvent.PROGRESS , progressHandler);
}
//Funcion que se ejecuta cuando termina la descarga.
function completeHandler(event:Event):void {
trace("completeHandler: " + event);
addChild(event.target.content);
}
//Se ejecuta al recibir un código de estado HTTP
function httpStatusHandler(event:HTTPStatusEvent):void {
trace("httpStatusHandler: " + event);
}
//Se distribuye cuando las propiedades del objeto cargado están disponibles
//A partir de su distribucion podriamos modificar el objeto (ancho, escala, etc)
function initHandler(event:Event):void {
trace("initHandler: " + event);
}
//Se ejecuta cuando hay un error de entrada/salida, por ejemplo, al intentar cargar un
//archivo inexistente
function ioErrorHandler(event:IOErrorEvent):void {
trace("ioErrorHandler: " + event);
}
//Se ejecuta cuando comienza la operación de carga
function openHandler(event:Event):void {
trace("openHandler: " + event);
}
//Se ejecuta periodicamente mientras dura la carga
function progressHandler(event:ProgressEvent):void {
trace("progressHandler: bytesLoaded=" + event.bytesLoaded + " bytesTotal=" + event.bytesTotal);
}
//Empezamos
CargarSwf("http://www.vendamoshoy.com/home/templates/ja_shopping_ii/publicidad/pub"+Math.ceil(Math.random()*3)+".swf");
Ok. Hasta ahí funciona todo bien. lo que yo quiero hacer es que vaya cambiando de archivo cuando termina la película. Hasta ahora lo que pude hacer es tener todos los swf "pub.." de la misma cantidad de frames y en el archivo header le sumo esa cantidad de frames desde que lo cargo y llamo a este código:
this.removeChild(contenedor); //elimino el clip anterior
gotoAndPlay(160); //cargo otro
El problema viene cuando tenga que cargar algun swf con mayor cantidad de frames ya que el this.removeChild(contenedor) me cortaría la película..
Estuve viendo que en el último frame de todos los archivos "pub.." se podría eliminar el contenedor y volver al frame 160 del header por medio de _parent pero no se como se usa..
Alguna otra solución?..
Gracias..
0