【转】Flash AS3.0 中的自定义事件
原文 http://www.cnblogs.com/acpp/archive/2010/10/19/1855670.html
1 package { 2 3 import flash.events.Event; 4 5 //导入事件类 6 7 public class CustomEvent extends Event { 8 9 //声明自定义事件扩展自事件类成为其子类 10 11 public static const SENDFLOWER:String="sendFlower"; 12 13 //声明静态常量作为事件类型1 14 15 public static const SENDCAR:String="sendCar"; 16 17 //声明静态常量作为事件类型2 18 19 public var info:String; 20 21 //声明变量储存事件信息,这也是我们用自定义事件的主要原因,可以用他来 22 23 //携带额外的信息 24 25 public function CustomEvent(type:String,inf) { 26 27 super(type); 28 29 //调用父类构造函数并设置传入的参数作为事件类型 30 31 info=inf; 32 33 //将传入的参数2存入info 34 35 } 36 37 } 38 39 } 40 41 //2、男孩类: 42 package { 43 44 import flash.events.EventDispatcher; 45 46 //导入事件发送者类 47 48 import flash.events.Event; 49 50 //导入事件类 51 52 public class Boy extends EventDispatcher { 53 54 //声明男孩类扩展自事件发送者类,成为其子类 55 56 public function sendFlower() { 57 58 //声明公开送花方法; 59 60 var info:String="玫瑰花"; 61 62 //声明局部变量设置发送信息 63 64 var events=new CustomEvent(CustomEvent.SENDFLOWER,info); 65 66 //声明一个新的自定义事件类的实例,并设置类型为第一种、 67 68 //将发送信息存入事件 69 70 this.dispatchEvent(events); 71 72 //发送该事件 73 74 } 75 76 public function sendCar() { 77 78 //声明公开送车方法; 79 80 var info:String="百万跑车"; 81 82 //声明局部变量设置发送信息 83 84 var events=new CustomEvent(CustomEvent.SENDCAR,info); 85 86 //声明一个新的自定义事件类的实例,并设置类型为第二种、 87 88 //将发送信息存入事件 89 90 this.dispatchEvent(events); 91 92 //发送该事件 93 94 } 95 96 } 97 98 } 99 100 //3、女孩类: 101 package { 102 public class Girl { 103 public function replay(info):void { 104 trace(info); 105 } 106 //声明公开方法,做出反应 107 } 108 } 109 //4、文档类: 110 package { 111 112 import flash.display.Sprite; 113 114 //导入Sprite类 115 116 public class Documents extends Sprite { 117 118 //声明文档类扩展自sprite类 119 120 private var _boy:Boy; 121 122 //声明私有属性为男孩类型 123 124 private var _girl:Girl; 125 126 //声明私有属性为女孩类型 127 128 public function Documents() { 129 130 //构造函数 131 132 _boy=new Boy; 133 134 //创建男孩实例 135 136 _girl=new Girl; 137 138 //创建女孩实例 139 140 _boy.addEventListener(CustomEvent.SENDFLOWER,_hand); 141 142 //为男孩增加类型为CustomEvent.SENDFLOWER的事件监听 143 144 _boy.addEventListener(CustomEvent.SENDCAR,_hand); 145 146 //为男孩增加类型为CustomEvent.SENDCAR的事件监听 147 148 _boy.sendCar(); 149 150 //调用男孩的送车的方法。你可以再试着调用男孩的sendFlower 151 152 //方法试试,看结果有什么不同 153 154 } 155 156 private function _hand(E:CustomEvent):void { 157 158 //声明事件处理器 159 160 _girl.replay("我收到一位帅哥送我的:"+E.info); 161 162 //调用女孩的replay方法。 163 164 } 165 166 } 167 168 }