ActionScript3.0里有兩種事件處理方法:事件調(diào)用回調(diào)函數(shù)、事件偵聽(tīng)器
事件調(diào)用回調(diào)函數(shù)
<mx:Button id="myButton" click="myFunction(event)"/>
事件偵聽(tīng)器
事件偵聽(tīng)器讓一個(gè)對(duì)象(稱(chēng)作偵聽(tīng)對(duì)象)接收由其他對(duì)象(稱(chēng)廣播對(duì)象)生成的事件。廣播對(duì)象注冊(cè)偵聽(tīng)對(duì)象以接收該廣播器對(duì)象生成的事件。
首先使用addEventListener方法注冊(cè)偵聽(tīng)對(duì)象:
偵聽(tīng)對(duì)象.addEventListener(type:String, listener:Function)
type 參數(shù)指出你要監(jiān)聽(tīng)的事件類(lèi)型,比如"enterFrame". 然而自己輸入這些字符串容易出錯(cuò),最好的辦法就是調(diào)用Event類(lèi)的靜態(tài)成員屬性:導(dǎo)入Event 類(lèi),調(diào)用addEventListener 方法:
addEventListener(Event.ENTER_FRAME, onEnterFrame);
第二個(gè)參數(shù)onEnterFrame,指向類(lèi)中定義的回調(diào)函數(shù)(回調(diào)函數(shù)定義了對(duì)事件處理),該函數(shù)需要傳遞進(jìn)EVENT的一個(gè)實(shí)例:
private function onEnterFrame(event:Event) {
//處理事件的代碼
}
下面是事件偵聽(tīng)器的例子
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對(duì)象
在第9行注冊(cè)了一個(gè)偵聽(tīng)器,該偵聽(tīng)器負(fù)責(zé)偵聽(tīng)鼠標(biāo)單擊事件,事件處理被定義在convertCurrency()方法內(nèi)。