Ver Mensaje Individual
  #2 (permalink)  
Antiguo 16/06/2011, 08:56
polo_W12
 
Fecha de Ingreso: enero-2008
Ubicación: Concepción, Chile
Mensajes: 76
Antigüedad: 16 años, 9 meses
Puntos: 3
Respuesta: Función que asigna/cambia propiedades/atributos de un objeto.

Basados en la misma estructura se me ocurre la siguiente estructura aunque es un poco básica, cree una clase que recibe múltiples Objetos y les asigna Listener, sin necesidad des escribir mucho código.

Código ACTIONSCRIPT:
Ver original
  1. package{
  2.    
  3.    import flash.display.*;
  4.    
  5.    public class Events{
  6.        
  7.        
  8.       public static function addListenerNClips(a:Array, b:Object=null, c:Object=null):void{
  9.          for each (var clip:* in a){  
  10.             addListenerClip(clip, b, c);
  11.          }  
  12.       }
  13.        
  14.       public static function addListenerClip(a:*, b:Object=null, c:Object=null):void{
  15.          var clip:*                           = a;
  16.          if(c){
  17.             setPropClip(clip, c);
  18.          }
  19.          if(b){
  20.             createNewListener(a, b);
  21.          }
  22.       }
  23.        
  24.       public static function addListenerButton(a:MovieClip, b:Object=null, c:Object=null):void{
  25.          var button:*                        = a;
  26.          if(c){
  27.             setPropClip(button, c);
  28.          }
  29.          if(b){
  30.             createNewListener(button, b);
  31.          }
  32.       }
  33.        
  34.       public static function createNewListener(clip:*, obj:Object):void{
  35.          for(var id:String in obj){
  36.             var val:Object                      = obj[id];
  37.             clip.addEventListener(id, val);
  38.          }
  39.       }
  40.        
  41.       public static function setPropClip(clip:*, obj:Object):void{
  42.          if(obj){
  43.             for(var id:String in obj){
  44.                var val:Object                   = obj[id];  
  45.                clip[id]                     = val;
  46.             }
  47.          }
  48.       }
  49.        
  50.       public static function setPropNClips(xClips:Array, obj:Object):void{
  51.          for each (var clip:* in xClips){  
  52.             setPropClip(clip, obj);
  53.          }  
  54.       }      
  55.              
  56.        
  57.    }
  58. }

La clase se utiliza de la siguiente manera:

Código ACTIONSCRIPT:
Ver original
  1. import Events;
  2. //agrego valores a un arreglo, así es mucho más fácil trabajar.
  3. var xClips:Array    = [clip0, clip1, clip2, clip3];
  4. //luego llamo los metodos de la clase sin instanciar no es necesario.
  5. //el primer argumento contiene el arreglo con los clips.
  6. //el segundo argumento contiene un objeto con los Listener a Agregar.
  7. //el tercer argumento contiene un objeto con las propiedades a asignar/modificar del objeto.
  8.  
  9. Events.addListenerNClips(xClips, {mouseDown:funcionDown, rollOver:rollOver}, {enabled:true, disabled:true, color:0xff00ff});
  10.  
  11. function funcionDown(a:MouseEvent):void{
  12.    trace("Down in:", a.currentTarget.name);
  13. }
  14.  
  15. function rollOver(a:MouseEvent):void{
  16.    trace("Over in:", a.currentTarget);
  17. }

Saluda Atte.
Claudio Barrera Asencio.
TNS. en Computación e Informática.