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 :
package{
import flash.display.*;
public class Events{
public static function addListenerNClips(a:Array, b:Object=null, c:Object=null):void{
for each (var clip:* in a){
addListenerClip(clip, b, c);
}
}
public static function addListenerClip(a:*, b:Object=null, c:Object=null):void{
var clip:* = a;
if(c){
setPropClip(clip, c);
}
if(b){
createNewListener(a, b);
}
}
public static function addListenerButton(a:MovieClip, b:Object=null, c:Object=null):void{
var button:* = a;
if(c){
setPropClip(button, c);
}
if(b){
createNewListener(button, b);
}
}
public static function createNewListener(clip:*, obj:Object):void{
for(var id:String in obj){
var val:Object = obj[id];
clip.addEventListener(id, val);
}
}
public static function setPropClip(clip:*, obj:Object):void{
if(obj){
for(var id:String in obj){
var val:Object = obj[id];
clip[id] = val;
}
}
}
public static function setPropNClips(xClips:Array, obj:Object):void{
for each (var clip:* in xClips){
setPropClip(clip, obj);
}
}
}
}
La clase se utiliza de la siguiente manera:
Código ActionScript :
import Events;
//agrego valores a un arreglo, así es mucho más fácil trabajar.
var xClips:Array = [clip0, clip1, clip2, clip3];
//luego llamo los metodos de la clase sin instanciar no es necesario.
//el primer argumento contiene el arreglo con los clips.
//el segundo argumento contiene un objeto con los Listener a Agregar.
//el tercer argumento contiene un objeto con las propiedades a asignar/modificar del objeto.
Events.addListenerNClips(xClips, {mouseDown:funcionDown, rollOver:rollOver}, {enabled:true, disabled:true, color:0xff00ff});
function funcionDown(a:MouseEvent):void{
trace("Down in:", a.currentTarget.name);
}
function rollOver(a:MouseEvent):void{
trace("Over in:", a.currentTarget);
}
Saluda Atte.
Claudio Barrera Asencio.
TNS. en Computación e Informática.