Es q no me convence , la veo muy simple , si alguien se le ocurre algo mas ...
ya direis ...
Código :
//2004/9/29 /////////////////////////////////////////////////////////////////////// // ObjectLoader /////////////////////////////////////////////////////////////////////// // loader para cualquier tipo de objeto // todo : swf , jpg , xml , mp3 , loadVars ,mp3 // // CONSTRUCTOR: // ObjectLoader( // listener = objecto donde se aplicara los eventos // obj = objecto a seguir la transferencia // interval = en sg , lapsus de tiempo donde se comprueba la transferencia (setInterval) , por defecto 0.1 sg // sg = en sg , tiempo de espera de la respuesta de el servidor antes de pitar error , por defecto 3 sg ; // ) // // EVENTOS: // onLoadProgress : recibe un Object = {porcentaje, bytesTotal, bytesLoaded} // onLoadComplete : recibe un Object = {porcentaje, bytesTotal, bytesLoaded} // onLoadError : recibe un string de error en caso de no tener respuesta de el servidor // // ejemplo de uso: /* import com.buho.utilidades.ObjectLoader; // cargamos un jpg this.createEmptyMovieClip("container", 2); container.loadMovie("foto1.jpg"); // creamos los eventos listener = new Object (); listener.onLoadProgress = function(obj) { trace("porcentaje :"+obj.porcentaje); trace("bytesTotal :"+obj.bytesTotal); trace("bytesLoaded :"+obj.bytesLoaded); }; listener.onLoadComplete = function(obj) { trace("ya se cargo"); }; listener.onLoadError = function(string) { trace(string); }; var miLoader:ObjectLoader = new ObjectLoader( listener,container ); */ // by buho29 class com.buho.utilidades.ObjectLoader { private var $objeto:Object ; private var $listener:Object ; private var $interval:Number ; private var $EnterFrame:Number ; private var $error:Number ; private var $sg:Number ; private var $bytesAnterior:Number ; private var $porcentaje:Number ; function ObjectLoader(listener:Object,obj:Object,interval:Number,sg:Number) { if(interval== undefined) interval = .1 if(sg == undefined) sg = 3 ; $interval = 1000 * interval ; $sg = sg / interval ; $error = 0 ; $objeto = obj ; $listener = listener ; comprueba() ; } private function comprueba ():Void { $EnterFrame = setInterval(this, "progreso", $interval); } private function progreso():Void { //cuando el peso total es mayor a 4 bytes if ($objeto.getBytesTotal()>4) { //calculando el porcentaje $porcentaje = Math.round(($objeto.getBytesLoaded()/$objeto.getBytesTotal())*100); //cuando porcentaje es un numero (o sea existe) if (!isNaN($porcentaje)) { //cuando lo cargado es igual al valor total... if ($objeto.getBytesLoaded() == $objeto.getBytesTotal()) { complete(); } else { progress(); } } } else $error ++ ; if($error >= $sg){ $listener.onLoadError ("Posible error en la carga de el archivo") ; clearInterval($EnterFrame); } updateAfterEvent(); } private function progress():Void { if($bytesAnterior == $objeto.getBytesLoaded())$error ++ ; else $error = 0 ; $bytesAnterior = $objeto.getBytesLoaded() ; $listener.onLoadProgress({ porcentaje:$porcentaje, bytesTotal: Ko($objeto.getBytesTotal()), bytesLoaded: Ko($objeto.getBytesLoaded()) }); } private function complete():Void { $listener.onLoadComplete ({ porcentaje:$porcentaje, bytesTotal: Ko($objeto.getBytesTotal()), bytesLoaded: Ko($objeto.getBytesLoaded()) }); clearInterval($EnterFrame); } // Convertidor byte a KB private static function Ko ( bytes :Number ) :Number { return Math.round ( bytes / 1024 ) ; } function toString ():String {return "ObjectLoader" ;} }
salu2