快速业务通道

FlashMX2004的事件机制

作者 佚名技术 来源 服务器技术 浏览 发布时间 2012-07-08

queueObj:一个事件派遣中心对象
eventObj:事件对象,注意:与 dispatchEvent不同,它的target并无默认值,需要你手工设定.
为什么将这个方法称为事件传达呢?因为它可以让当前的事件派遣中心指示另一个事件派遣中心(方法的第一个参数)向外界广播消息。其实在dispatchEvent方法的内部就调用了dispatchQueue,只是将参数queueObj设为当前的事件派遣中心罢了。
*/

function addEventListener(event:String, handler):Void
/*注册某个事件的监听者
event:监听的事件名称
handler:监听事件的对象
这个方法与AsBroadcaster类的addListener方法相比,多出了参数event,
明确了所监听的具体事件。
*/

function removeEventListener(event:String, handler)
/*注销某个事件的监听者

event:事件名称
handler:要注销的监听事件的对象
这个方法与AsBroadcaster类的removeListener方法相比,多出了参数event,明确了从哪个事件中注销监听对象。
下面就让我们在战场上实战一下EventDispatcher吧。假设有两个指挥中心,一个是司令部,一个是战地指挥部。有三个兵种,分别是炮兵、步兵和敢死队。司令部可以指挥炮兵的进攻、驻守和步兵的驻守,战地指挥部可以指挥步兵的进攻、冲锋和敢死队的冲锋,并且司令部可以向战地指挥部传达指示。下面是实现上述复杂关系的代码:

-----EventDispatcher测试.fla 开始-----
import mx.events.EventDispatcher;
//导入 mx.events.EventDispatcher类
var 司令部 = new Object();
司令部.名称 = "司令部";
EventDispatcher.initialize(司令部);
//为司令部对象附加上派遣中心的相关功能。
var 战地指挥部 = new Object();
战地指挥部.名称="战地指挥部";
EventDispatcher.initialize(战地指挥部);
//为战地指挥部对象附加上派遣中心的相关功能。

var 步兵 = new Object();
步兵.on进攻 = function(eventObj) {
     //步兵的’on进攻’事件处理方法,记住需要有参数
var 来自=eventObj.target.名称;
     //eventObj.target引用广播’on进攻’事件的对象,用它可以访问事件源并反馈消息。
var 阵地=eventObj.阵地;
      //获取事件的关于’ 阵地’属性值
trace("步兵接到"+来自+"来电,轻装上阵,火速向敌方"+阵地+"前进!");
};
步兵.on驻守 = function(eventObj) {
var 来自=eventObj.target.名称;
trace("步兵接到"+来自+"来电,就地待命,多设岗哨,严防来犯之敌!");
};
步兵.on冲锋=function(eventObj){
var 来自=eventObj.target.名称;
var 阵地=eventObj.阵地;
trace("步兵接到"+来自+"来电,向敌方"+阵地+"发起冲锋!");

}
司令部.addEventListener("on驻守", 步兵);
//向司令部的’on驻守’事件注册监听对象’步兵’
战地指挥部.addEventListener("on进攻", 步兵);
//向司令部的’on进攻’事件注册监听对象’步兵’
战地指挥部.addEventListener("on冲锋",步兵);
//向战地指挥部的’on冲锋’事件注册监听对象’步兵’
var 炮兵 = new Object();
炮兵.on进攻 = function(eventObj) {
var 来自=eventObj.target.名称;
var 阵地=eventObj.阵地;
trace("炮兵接到"+来自+"来电,向敌方"+阵地+"阵地猛烈轰击!");
};
炮兵.on驻守 = function(eventObj) {
var 来自=eventObj.target.名称;
trace("炮兵接到"+来自+"来电,就地待命,保证弹药准备充足!");
};
司令部.addEventListener("on驻守", 炮兵);
司令部.addEventListener("on进攻", 炮兵);
var 敢死队=new Object();
敢死队.on冲锋=function(eventObj){
var 来自=eventObj.target.名称;
var 阵地=eventObj.阵地;
trace("敢死队接到"+来自+"来电,向敌方"+阵地+"发起冲锋!拼死也要拿下!");
}
战地指挥部.addEventListener("on冲锋",敢死队);

//-------

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号