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()方法内。