возможно я не вполне проникся в чем тут трабл, тока я не вижу почему бы не заставить статический диспатчер вещать события на все экземпляры..
Код:
package {
import flash.display.MovieClip;
import flash.events.*;
public class MenuButton extends MovieClip{
static private var dispatcher:ButDispatcher=new ButDispatcher();
public function MenuButton(){
dispatcher.addEventListener(ButDispatcher.BTN_STATUS, onStatus);
addEventListener("click",onClick);
addEventListener("rollOver",onOver);
}
private function onClick(evt:Event):void{
dispatcher.broadcast("click");
}
private function onOver(evt:Event):void{
dispatcher.broadcast("over");
}
public function onStatus(evt:ButEvent):void{
trace(name+":"+evt.status);
}
}
}
Код:
package {
import flash.events.*;
class ButDispatcher extends EventDispatcher {
public static var BTN_STATUS:String = "btnStatus";
public function broadcast(status:String):void {
dispatchEvent(new ButEvent(ButDispatcher.BTN_STATUS,status));
}
}
}
Код:
package {
import flash.events.Event;
public class ButEvent extends Event{
public var status:String;
public function ButEvent(type:String,status:String=null){
super(type);
this.status=status;
}
}
}
насчет того что цикл быстрее, есть большие сомнения: нативные методы (а там тот же цикл) всегда быстрее скриптовых, во всяком случае AsBroadcaster в AS2 выигрывает у цикла в таких случая в разы, здесь не проверял..