原文 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 }