ActionScript3.0里有兩種事件處理方法:事件調用回調函數、事件偵聽器
事件調用回調函數
<mx:Button id="myButton" click="myFunction(event)"/>
事件偵聽器
事件偵聽器讓一個對象(稱作偵聽對象)接收由其他對象(稱廣播對象)生成的事件。廣播對象注冊偵聽對象以接收該廣播器對象生成的事件。
首先使用addEventListener方法注冊偵聽對象:
偵聽對象.addEventListener(type:String, listener:Function)
type 參數指出你要監聽的事件類型,比如"enterFrame". 然而自己輸入這些字符串容易出錯,最好的辦法就是調用Event類的靜態成員屬性:導入Event 類,調用addEventListener 方法:
addEventListener(Event.ENTER_FRAME, onEnterFrame);
第二個參數onEnterFrame,指向類中定義的回調函數(回調函數定義了對事件處理),該函數需要傳遞進EVENT的一個實例:
private function onEnterFrame(event:Event) {
//處理事件的代碼
}
下面是事件偵聽器的例子
1 <?xml version="1.0" encoding="utf-8"?>
2 <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="createListener();">
3 <mx:Script>
4 <![CDATA[
5
6 import flash.events.MouseEvent;
7
8 public function createListener():void {
9 btnConvert.addEventListener(MouseEvent.CLICK, convertCurrency);
10 }
11
12 public function convertCurrency(e:MouseEvent):void {
13 var rate:Number = 120;
14 var price:Number = Number(txtPrice.text);
15 if (isNaN(price)) {
16 lblResults.text = "Please enter a valid price.";
17 } else {
18 price = price * rate;
19 lblResults.text = "Price in Yen: " + String(price);
20 }
21 }
22 ]]>
23 </mx:Script>
24
25 <mx:Panel x="20" y="20" width="450" height="150" layout="absolute"
26 title="Currency Converter">
27 <mx:Label x="25" y="37" text="Price in Dollars"/>
28 <mx:Label x="120" y="65" id="lblResults"/>
29 <mx:TextInput x="120" y="35" id="txtPrice"/>
30 <mx:Button x="290" y="35" label="Convert to Yen" id="btnConvert" />
31 </mx:Panel>
32 </mx:Application>
按鍵btnConvert對象
在第9行注冊了一個偵聽器,該偵聽器負責偵聽鼠標單擊事件,事件處理被定義在convertCurrency()方法內。