pues si, solo quiero poner a su disposicion la ultima actualizacion de esta clase, se trata de una clase para cargar contenido externo, osea otros swfs, jpgs, pngs, gif dentro de otro contenedor, mostrando un cargador, en esta version le e agregado un par de cosas mas, que estan documentadas en el codigo! espero que a alguien le pueda servir, e tratado de que sea lo mas facil posible de usar.
Código PHP:
/**
* @Author: Crysfel Villa
* Created: Saturday, August 13, 2005 6:45:23 PM
* Modified: Thursday, October 06, 2005 11:10:17 AM
* Modified: Thursday, July 20, 2006 11:10:17 AM
* Version: 1.2
*
* Con esta clase se puede cargar contenido externo, dentro de algun contenedor, mostrando una animacion de la carga
* hecha por el el desarrollador, osea que puedes poner la animacion de tu gusto, unicamente debe cumplir con algunas
* caracteristicas, las cuales se explican en el constructor de la clase.
*/
class MyMovieClipLoader extends MovieClipLoader{
private var mcCargando:MovieClip;
private var mcTarget:MovieClip;
private var width:Number;
private var height:Number;
private var funcion:Function;
private var rootHilo:Number;
/**
* Contructor de la clase
* @param cargador:MovieClip es el MC contenedor del cargador, este MC debe tener dos objetos, un Textfield dinamico, y un MovieClip
* con una animacion de 100 frames, instanciados como "progress_txt" y "progress_mc" respectivamente.
* Puede ademas tener 2 funciones declaradas opcionalmente para la aparicion y salida del cargador contenedor, estas funciones
* deben llamarse intro():Void, out():void, la funcion intro() se dispara cuando inicia la carga y es pensada para la hacer una
* animacion cuando aparece el cargador, y no simplemente entre de golpe, out() es la funcion que dispara
* la animacion de la salida del cargador. Estas dos funciones son opcionales.
*
* @return nothing
*/
public function MyMovieClipLoader(cargador:MovieClip){
mcCargando = cargador;
}
/**
* Carga un swf,jpg,gif,png dentro de otro MovieClip
* @param url:String es la url del archivo a cargar
* target:MovieClip es el MC donde se colocara el archivo a cargar.
* callBack:Function es un funcion disparada al termino de la carga.
* @return nothing
*/
public function myLoadClip(url:String,target:MovieClip,callBack:Function):Void{
var myListener:Object = new Object();
mcTarget = target;
funcion = callBack;
this.addListener(myListener);
this.loadClip(url,target);
mcCargando._visible = true;
mcCargando.intro();
if(target == null)
trace("Error en la carga de "+url+" el target es: "+target);
if(url==null || url == "")
trace("Error en la carga, la url es: '"+url+"'");
}
/**
* @return Number, el width del archivo cargado
*/
public function getWidth():Number{
return width;
}
/**
* @return Number, el height del archivo cargado
*/
public function getHeight():Number{
return height;
}
public function onLoadStart(target_mc:MovieClip):Void{
}
/**
* Cuando haces el TestMovie no funciona (version 7) :( porque??
* no lo se, pero cuando lo subes a la web, funciona perfecto :) version 8 funciona muy bien :)
*/
public function onLoadProgress(target:MovieClip,loadedBytes:Number,totalBytes:Number):Void{
var porcent:Number = Math.floor((loadedBytes*100)/totalBytes);
mcCargando.progress_mc.gotoAndStop(porcent);
mcCargando.progress_txt.text = porcent+"%";
//trace(porcent);
}
public function onLoadComplete(target_mc:MovieClip):Void{
}
/**
* Aqui se dispara la funcion out() del cargador contenedor, al mismo tiempo se hace invisible, entonces
* no se vera la animacion de salida del cargador, para solucionar esto, debes hacer visible el cargador
* dentro de tu funcion out(); enjoy :)
*/
public function onLoadInit ( target_mc:MovieClip ):Void{
width = target_mc._width;
height = target_mc._height;
mcCargando._visible = false;
mcCargando.out()
funcion();
}
public function onLoadError ( target:MovieClip, error:String ):Void{
trace ("No se pudo cargar el objeto en = " + target);
trace ("ERROR = " + error);
}
/**
* Con esta funcion puedes monitoriar la carga de la pelicula principal.
* @param callBack:Function parametro opcional, permite ejecutar una funcion
* al termino de la carga.
* @return nothing
*/
public function cargarRoot(callBack:Function):Void {
funcion = callBack;
mcCargando._visible = true;
mcCargando.intro();
rootHilo = setInterval(this,"proggressRoot", 10);
}
private function proggressRoot():Void{
var porcent:Number = Math.floor((_root.getBytesLoaded()*100)/_root.getBytesTotal());
mcCargando.progress_mc.gotoAndStop(porcent);
mcCargando.progress_txt.text = porcent+"%";
if (porcent>=100) {
mcCargando._visible = false;
mcCargando.out();
funcion();
clearInterval(rootHilo);
}
}
}
Código PHP:
//importamos la clase, debe de estar en el mismo directorio o bien si esta en otro, aqui lo especificas
import MyMovieClipLoader;
//hacemos una instancia, pasandole en el constructor la animacion del cargador, como ya se ha explicado una animacion de 100 frames, lee la documentacion de la clase para mayor explicacion
var mcl:MyMovieClipLoader = new MyMovieClipLoader(cargadorAnim);
//aqui monitoriamos el progreso de la pelicula principal, y le pasamos la
//funcion cargaMain, que se ejecutara en el momento que se cargue la
//pelicula principal
mcl.cargarRoot(cargarMain);
function cargarMain():Void{
//esta linea se ejecuta cuando la pelicula principal esta lista, ahora se carga
//el contenido, dentro de un MovieClip
mcl.myLoadClip("main.swf",contenido.main,entrar);
}
function entrar():Void{
//una vez todo cargado lo mostramos.
contenido.main._visible = false;
_root.gotoAndPlay(2);
}