Comunidad de diseño web y desarrollo en internet online

clase ObjectLoader

Citar            
MensajeEscrito el 16 Sep 2004 09:03 pm
bueno como sigo con mi preload , me hice una clase para cargar objectos , esta sin probar a fondo , lo justo pa q no pite error XD XD

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

Por buho29

510 de clabLevel

1 tutorial

7 ejemplos

 



Ultima edición por buho29 el 02 Oct 2004 07:54 pm, editado 2 veces

unknown
Citar            
MensajeEscrito el 17 Sep 2004 02:54 am
Suena interesante; se ve interesante, pero le falta afinación (E identación, no seria mala idea darle click al boton "autoformat" de Flash)

Me recuerda a la conversación inicial (Donde meti la pata dos veces, pero dije varias cosas interesanes) que propicio la clase MovieClipLoader de Colin; aunque con un diseño distinto :)

Tienes mucho para mostrar muy interesante, tendre que preparar un miniarticulo para que cuando este listo se le de el lanzamiento que se merece :)

Por Freddie

BOFH

53 tutoriales
597 articulos
43 ejemplos

Genero:Masculino   Admin

Conserje de Cristalab

unknown
Citar            
MensajeEscrito el 17 Sep 2004 07:26 am
Pues sí, la verdad es que buho saca cada día por aquí algún experimente de los suyos y están muy bien, jeje.

A ver como acaba esto, pero estaría genial verlo acabado ;)

PD: ACABALO :|

XD

Por Elecash

Claber

8126 de clabLevel

37 tutoriales
19 articulos
13 ejemplos

  Bastard Operators From Hell Desarrollador de GAIA Premio_Secretos Héroes

BarnaCity

unknown
Citar            
MensajeEscrito el 17 Sep 2004 09:03 am
Ya me parecia ... , la alegria de los pobres ...

Y ademas gordisimo ... , si el fichero no existe o pasa algun error , el setInterval sigue zumbando ... , se me paso lo siento , aver si lo arreglo hoy..

Se me ocurre hacer un detector de inactividad ( x sg ) pero cuanto tiempo pongo ?? , eso dependeria de el tamanio a cargar no ?

MovieClipLoader la hizo colin ?? , me habia parecido q solo se lo habia pedido a macromedia , y por cierto se puede ver esa clase ?? donde leches esta ??? y te vas a reir pero nunca la use ... ,
llevo con 2004 algo mas de un mes pero francamente nunca me convencio esa clase ademas no ayudad a un novato , sigue necesitando saber algo de as , y cuando quierra hacer un preload de otro tipo de fichero se le vendra el mundo encima ...

afinación ?? q significa esa palabra (casi compro un diccionario) XD XD , en serio , nose ...

y lo de formatear el code XD XD jiji!! no me aclaro ni yoo .

bueno ahi la teneis en colorines y to ...

http://www.activicio.com/lab/objectloader.html

Por buho29

510 de clabLevel

1 tutorial

7 ejemplos

 

unknown
Citar            
MensajeEscrito el 17 Sep 2004 09:06 am
Por cierto solo acabo de empezar XD XD XD , tengo bastantes sorpresas ...

Se me pasaba por si alguien no se dio cuenta , esta clase no carga nada , ni pretende supervisar nada ... , solo da info de como va la transferencia nada mas !!!

y voy acabar eso :oops:

Por buho29

510 de clabLevel

1 tutorial

7 ejemplos

 



Ultima edición por buho29 el 17 Sep 2004 09:10 am, editado 1 vez

unknown
Citar            
MensajeEscrito el 17 Sep 2004 09:08 am
Texto extraido de la Real Academia de la Lengua

RAE escribió:

afinar1.
(De fino).
1. tr. Perfeccionar, precisar, dar el último punto a algo. U. t. c. prnl.
2. tr. Hacer fino o cortés a alguien. U. m. c. prnl.
3. tr. Dicho de un encuadernador: Hacer que la cubierta del libro sobresalga igualmente por todas partes.
4. tr. Purificar los metales.
5. tr. Poner en tono justo los instrumentos musicales con arreglo a un diapasón o acordarlos bien unos con otros.
6. tr. Apurar o aquilatar hasta el extremo la calidad, condición o precio de algo.
7. tr. Arg., Cuba, El Salv., Hond., Méx. y Ur. Mejorar el funcionamiento y rendimiento del motor de un vehículo mediante la limpieza y regulación de sus partes, en especial las bujías y el carburador.
8. tr. Cuba. congeniar. María afina con Pedro.
9. intr. Cantar o tocar entonando con perfección los sonidos.


Por otro lado, Colin ofrecio todo el codigo compatible con MX y la definición del prototipo (En lo que a esta epoca seria, la interface de la clase)

En cuanto a formatear, queria decir, identar

Y pues ya que sabes que es afinación; pues eso mismo, sacar una clase v1.0estable; como la clase Labels.as DE elecash o un proyeto oculto entre elecash y yo; ya lo veran

MWAHAHAHAHAHAHAHAHAHA

Por Freddie

BOFH

53 tutoriales
597 articulos
43 ejemplos

Genero:Masculino   Admin

Conserje de Cristalab

unknown
Citar            
MensajeEscrito el 17 Sep 2004 10:55 am
Bueno ahi va una posible solucion , no testao (no puedo ... , hasta q no tenga adsl ...)

Solo lo probe en local (y eso es lo mismo q na...)

De momento trabajare con ella como si fuera "v1.0estable" XD XD

Es q si no , no acabare nunca mi galeria XD XD XD (no se lo conteis a freddie® XD XD)

Ya cuando tenga una conexion mas economica (ultima factura 250 euros y claro ... , pica q flipas ...)

Otra q alguien me recupere el prototype de colin porq seguro tiene mejor soluciones y las quierro estudiar ...

http://www.activicio.com/lab/objectloader1.html

Por buho29

510 de clabLevel

1 tutorial

7 ejemplos

 

unknown
Citar            
MensajeEscrito el 17 Sep 2004 03:47 pm
o un proyeto oculto entre elecash y yo; ya lo veran


:?

Del proyecto oculto no se yo ni la mitad XD

Por Elecash

Claber

8126 de clabLevel

37 tutoriales
19 articulos
13 ejemplos

  Bastard Operators From Hell Desarrollador de GAIA Premio_Secretos Héroes

BarnaCity

unknown
Citar            
MensajeEscrito el 01 Oct 2004 06:03 pm
Actualizado !!

Por buho29

510 de clabLevel

1 tutorial

7 ejemplos

 

unknown
Citar            
MensajeEscrito el 02 Oct 2004 02:05 am
buho29; tu clase me parece mucho mas que interesante; ¿crees que seria bueno ponerla como proyecto de estudio en portada? (Es decir, en el weblog); solamente tendrias que miniexplicar que es y mostrar el codigo (Quizas un ejemplo en SWF) y seria suficiente, porque esta buenisima y seria muy bueno que mucha gente la aprovechara

Por Freddie

BOFH

53 tutoriales
597 articulos
43 ejemplos

Genero:Masculino   Admin

Conserje de Cristalab

unknown
Citar            
MensajeEscrito el 02 Oct 2004 07:56 pm
Bueno una mini explicacion de ObjectLoader ... :

La idea no es nueva , muchas clases comparten metodos comunes y cree una clase general q me sirva para saber como va la transferencia .

La clase no crea nada ni enseña nada , solo proporciona datos , uso setInterval q llama a "progreso" cada cierto tiempo , cada vez q se llama a "progreso" recoge los bytes cargados y llama a una function "onLoadProgress" (evento en este caso ) pasandole un objecto con los datos "bytesLoaded" , "bytesTotal" y "porcentaje"

Ya dentro de el evento haces lo q quierres con los datos ...

Si la clase no recibe ni un byte durante 3 sg (se puede cambiar) llama al evento onLoadError y elimina setInterval .

hijo no se me ocurre mas ...

Adornalo como puedas ...

el ejemplo pon lo q te parece , la verdad no pense q necesitara una explicacion por lo parecido con la clase MovieClipLoader , y con el ejemplo q viene con la clase creo q es suficiente ...

pd: arregle una errata en el code ...

salu2

Por buho29

510 de clabLevel

1 tutorial

7 ejemplos

 

unknown
Citar            
MensajeEscrito el 10 Feb 2005 02:45 pm
Hola buho, podrias mostrarme con un ejemplo como deberia trabajar ObjectLoader con un XML.

Muchas Gracias
Saludos.
Ptardo

Por Pablo B.

Invitado



 

safari

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.