【游客模式】——注册会员,加入11RIA 闪客社区吧!一起见证Flash的再次辉煌……
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
[Actionscript3] 纯文本查看 复制代码 //文档类;
package {
//注意:我这里没有导入EventDispatcher类,而是导入自定义的类;
import flash.display.Sprite;
import flash.events.Event;
import son.ComDispatch;
public class doc extends Sprite {
//创建一个自定义类的实例属性;
var sender:ComDispatch=new ComDispatch("赵老师");
public function doc() {
//每次调用EventDispatcher类的相关方法之前都要先调用getSend方法,这就是复合的特点;
sender.Receiv(eFun);
sender.getSend().addEventListener("下课",eFun);
//但是doSome方法中有发送事件的方法;
sender.doSome();
sender.Romve(eFun);
sender.getSend().dispatchEvent(new Event("下课"));
sender.getSend().removeEventListener("下课",eFun);
}
//下面的方法将根据不同类型的事件作出不同的回应;
private function eFun(e:Event):void{
if(e.type=="上课"){
trace("老师好!!");
}
else if(e.type=="下课"){
trace("老师再见!");
}
}
}
}
//用复合的方法定义一个发送事件类;
package son {
import flash.events.Event;
import flash.events.EventDispatcher;
public class ComDispatch {
//复合一个私有的EventDispatcher属性;
private var _eDispatcher:EventDispatcher=new EventDispatcher();
public var nam:String;
public function ComDispatch(str:String) {
nam=str;// constructor code
}
//定义一个方法,用来访问私有的属性,从而调用这个属性的相关方法;
public function getSend():EventDispatcher{
//在访问属性之前,先输出发送者的名字;
trace("我是发送者:"+nam);
return _eDispatcher;
}
public function doSome(){
//下面是一个动作,并发送了“上课”事件;
trace("我在用一个方法,并发送上课事件");
_eDispatcher.dispatchEvent(new Event("上课"));
}
//用上下面的方法侦听事件;
public function Receiv(ef:Function){
//下面是一个动作,并接收“上课”事件;
trace("我在用一个方法,并接收上课事件");
_eDispatcher.addEventListener("上课",ef)
}
public function Romve(ef:Function){
trace("我在用一个方法,并移除侦听器");
_eDispatcher.removeEventListener("上课",ef);
}
}
}
|