caster = {} AsBroadcaster.initialize(caster) a = {message:function (a,b) {trace("a: "+a+b)}} b = {message:function (a,b) {trace("b: "+a+b)}} c = {message:function (a,b) {trace("c: "+a+b)}} caster.addListener(a) caster.addListener(b) caster.addListener(c) caster.broadcastMessage("message", "Hello ", "World!") caster.broadcastMessage("message", "Argument ", "Support!") /* trace a: Hello World! b: Hello World! c: Hello World! a: Argument Support! b: Argument Support! c: Argument Support! */ //-------------------------------------------------------------------------------------------------------------------- /* static function initialize(o:Object); //o:对象 //initialize:初始化方法,为对象o附加上作为事件源的各项功能。那么事件源都有什么功能呢? static function broadcastMessage(msg:String); //msg:消息 //broadcastMessage:广播方法,事件源的一个主要功能就是向外界广播一条消息,告知听广播的人"某一事件发生啦!" static function addListener(o:Object); //o:对象 //addListener:注册监听者方法,也就是决定广播消息给谁听的意思 static function removeListener(o:Object); //o:对象 //removeListener:注销监听者方法,也就是消息不再广播给谁听 */ var 司令部 = new Object(); //啊,司令部是个发布指挥消息的地方,用它做事件源是个不错的选择 AsBroadcaster.initialize(司令部); //这里直接用AsBroadcaster来引用AsBroadcaster类 //调用AsBroadcaster类的静态方法initialize,为司令部附加上作为事件源的各项功能 var 步兵 = new Object(); //生成步兵对象 步兵.on进攻 = function() { //on进攻: 这里之所以用'on'做前缀,是为了表明这个方法是响应一定事件的方法 trace("步兵接到司令部来电,轻装上阵,火速向敌方阵地前进!"); // 接到'on进攻'消息后采取的措施 }; 步兵.on驻守 = function() { trace("步兵接到司令部来电,就地待命,多设岗哨,严防来犯之敌!"); }; 司令部.addListener(步兵); //将步兵添加为司令部的监听者,从现在起他将听从司令部的指令行事 var 装甲兵 = new Object(); 装甲兵.on进攻 = function() { trace("装甲兵接到司令部来电,加足马力,火速向敌方阵地开进!"); }; 装甲兵.on驻守 = function() { trace("装甲兵接到司令部来电,就地待命,检修装甲,作好随时进攻的准备!"); }; 司令部.addListener(装甲兵); var 炮兵 = new Object(); 炮兵.on进攻 = function() { trace("炮兵接到司令部来电,向敌方阵地猛烈轰击!"); }; 炮兵.on驻守 = function() { trace("炮兵接到司令部来电,就地待命,保证弹药准备充足!"); }; 司令部.addListener(炮兵); //-------------------下面开始演示------------------------------------ trace("司令部一号指示"); 司令部.broadcastMessage("on进攻"); //司令部用'broadcastMessage' 方法广播'on进攻'指令 trace("司令部二号指示"); 司令部.removeListener(步兵); //"将在外,君令有所不授",司令部用'removeListener'方法注销了'步兵'听从指令的义务 司令部.broadcastMessage("on驻守"); //司令部用'broadcastMessage' 方法广播'on驻守'指令。注意:步兵现在不会驻守哦