Es q no me convence , la veo muy simple
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

