Comunidad de diseño web y desarrollo en internet online

una de AsBroadcaster , aunq a lo mejor completamente inutil

Citar            
MensajeEscrito el 25 Ago 2004 10:13 am
Bueno esto no se ... , si puede ser util ha alguien ... , me lo hice por una nesecidad de poder llamar un metodo a todos los mienbros de una clase ,cositas raras ....

la clase solo se puede llamar una vez ya q es estatic , lo hice asi para poder trabajar comodamente con dos clases y asi trabajo con ella desde cualquiere clase sin saber una referencia a la instancia de la clase Manager , si se quitara lo de estatic tendriamos un sistema de eventos parecidos a los componentes de flash ... , aunq yo casi prefiero usar metodos vacios ...

En mi caso un proyecto en 3d , tengo una clase camara q cuando se mueve tiene q llamar a un metodo a todas la instancia de la clase obj3D para actualizar sus posiciones en el escenario

Asi q con esto en la clase obj3D registro todas las instancias en la clase Manager y cada vez q muevo una camara llamo un metodo a todas las instancias obj3D ...

Mi ejemplo :

Código :

class Camara  {
   private var cam :Object={x:0, y:100, z:0, ry:0, rz:0, focalDistance:600};
   function Camara (pos:Object) 
   {
      if (pos!=undefined) cam = pos;
   }
   function set  _pos (pos:Object) 
   {
      setPos3D(pos);
   }
   private function setPos3D (pos:Object) 
   {
      for(var i in pos) cam[i] = pos[i];
      //aqui llamo a un metodo a todos los de la lista
      Manager.lanzaMetodo({metodo:"setObj3D",parametros:cam});
   }
}

class obj3D {
   function obj3D() 
   {
      //aqui agrego cada instancia a una lista 
      Manager.agregaMiembro(this);
   }
}


No se igual es una aberracion , supongo q hay mas soluciones mas sencillas pero este me parecio mas elegante ...

Código :

////////////////////////////////////////////////////
//                 SISTEMA DE GESTION
//
//  
//  Llamar un metodo solo a un grupo de instancias (lista) 
//
//  Tomate como ejemplo un foro , en un post tienes la opcion de que te manden un email 
//  cuando alguien ha respondido algo en ese post , te puedes suscribirte o borrar de cualquier post
//  Cuando alguien responde al post es un evento y manda un email a todos los miembros de la lista q eso seria el metodo
//  Esto es parecido pero para mc , clases ...
//  
class Manager  {
   static private var oLista :Object= new Object();
   /////// CONSTRUCTOR
   function Manager (){}
   /////// GESTION LISTAS
   static function agregaLista (lista:String):Void
   {
      oLista[lista]=new Object();
      AsBroadcaster.initialize(oLista[lista]);
   }   
   static function eleminaLista (lista:String):Void
   {
      delete oLista[lista];
   }
   /////// GESTION MIEMBROS DE UNA LISTA   
   static function agregaMiembro (miembro,lista:String):Void
   {
      lista =ifSimple (lista );
      if(oLista[lista]==undefined)agregaLista (lista);
      oLista[lista].addListener(miembro);
   }   
   static function eleminaMiembro (miembro:String,lista:String):Void
   {
      lista =ifSimple (lista );
      oLista[lista].removeListener(miembro);
   }
   /////// LANZADOR DE METODOS
   static function lanzaMetodo (config:Object,lista:String):Void
   {
      lista =ifSimple (config.lista );
      oLista[lista].broadcastMessage(config.metodo, config.parametros);
   }
   /////// COMPROBADOR SI ESTA A MODO SIMPLE
   private static function ifSimple (lista:String):String
   {
      if (lista==undefined) return "anonima";
      else return lista
   }
   /////// para ver las lista y los miembros registrados
   static function toString ():String
   {
      var mensaje="******************************\n";
      mensaje +=   "*         class Manager\n"
      mensaje +=   "******************************\n";
      mensaje +=dVerLista ();
      mensaje +=dVerMiembro();
      return mensaje ;
   }   
   static function dVerLista ():String
   {
      var count = 0;
      var mensaje = "__________verLista___________\n";
      mensaje += "  Lista : \n";
      for (var i in oLista) 
      {
         count++;
         mensaje += "  " +  i +"\n"   
      }
      mensaje += "  \n cantidad :" + count +"\n"
      return mensaje ;
   }
   static function dVerMiembro(lista):String
   {
      lista =ifSimple ( lista );
      var count = 0;
      var mensaje = "__________verMiembros___________\n";
      mensaje += "  miembros : \n";
      for (var i =0 ; i< oLista[lista]._listeners.length ; i++) 
      {
         mensaje += "  " + oLista[lista]._listeners[i]+"\n"   
      }
      mensaje += "\n  cantidad : " + oLista[lista]._listeners.length +"\n";
      return mensaje ;
   }
}


salu2

Por buho29

510 de clabLevel

1 tutorial

7 ejemplos

 

unknown
Citar            
MensajeEscrito el 25 Ago 2004 02:41 pm
Hola, esta muy bueno para explicar los ASBroadcaster; aunque ahora exista Delegate; ¿Podrias escribirlo con un poco mas de "tono de tutorial" con explicación inicial, alguna imagncilla y todo eso para poder montarlo en la sección de tutoriales?

Gracias ^^

Saludos

Por Freddie

BOFH

53 tutoriales
597 articulos
43 ejemplos

Genero:Masculino   Admin

Conserje de Cristalab

unknown
Citar            
MensajeEscrito el 26 Ago 2004 05:52 pm
jajajajaja , nunca paras de pedir ??

:lol: :lol:

bueno lo meto en la lista de las cosas para hacer , inventarme algun ejemplo facilito con el y me lio con el ...

Respecto a la clase Delegate , creo q no emite ningun tipo de comunicacion , ni crea listeners ni eventos , creo q es para crear funciones sobre los componentes o cualquiera cosa q use EventDispatcher.as , aun no le vi las ventajas a usarla ...

Esto es acto de fe, yo el ingles ni papa , despues me dare un voltio por las pag francesas a ver si encuentro mas info q me ilumine .

Viste la clase ?? , pa cuatro lineas q tiene y no me aclaro ... , crea una function dentro de un metodo ??? , me deja flipao , cuando dejaremos de estudiar ??

http://livedocs.macromedia.com/flash/mx2004/main_7_2/00002026.html

http://www.macromedia.com/devnet/mx/flash/articles/eventproxy.html

salu2

Por buho29

510 de clabLevel

1 tutorial

7 ejemplos

 

unknown
Citar            
MensajeEscrito el 26 Ago 2004 08:39 pm
dejaremos de estudiar cuando muramos

A la espera de tu tuto buho 8)

Por Freddie

BOFH

53 tutoriales
597 articulos
43 ejemplos

Genero:Masculino   Admin

Conserje de Cristalab

unknown

 

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