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