闲云无衣
无衣的笔记
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()方法内。


posted on 2007-04-23 19:36 无衣 阅读(1817) 评论(0)  编辑  收藏 所属分类: Flex