Adobe Flex :处理事件

 原文作者:Aral Balkan

Adobe® Flex™应用程序是事件驱动的。当用户与界面组件交互时事件会通知程序员,当一个组件的外观或者生命周期发生重要改变,比如创建或者销毁一个容器,或改变一个容器的大小的时候,事件也会通知程序员。
当一个组件的实例分派一个事件时,你为那个事件注册的监听器对象就会被通知。你可以在ActionScript中定义事件监听器(或者叫做事件处理器)来处理事件。你既可以在MXML声明中为一个组件注册事件监听器,也可以在ActionScript中实现相同的功能。
接收事件通知有三种方式:
• 在MXML中注册一个事件处理器
• 在MXML中创建一个内联(inline)的事件处理器
• 通过ActionScript注册一个事件处理器
在MXML中注册一个事件处理器
第一个,而且是最广泛地被用来接收事件通知的方法就是在MXML中定义一个事件处理器,当事件发生时就调用它。
在这个例子中,你为一个Button控件的click(点击)事件定义了一个事件处理器。当用户点击这个Button控件时,事件处理器会把Label控件的text属性设成 "Hello, World!"。
示例
<?xml version="1.0" encoding="utf-8"?>
<mx:Application
xmlns:mx="
http://www.adobe.com/2006/mxml"
width="300" height="200"
horizontalAlign="center" verticalAlign="middle"
viewSourceURL="src/HandlingEventsEventHandler/index.html">
<mx:Script>
<![CDATA[
import flash.events.MouseEvent;
private function clickHandler ( event:MouseEvent ):void
{
myLabel.text = "Hello, World!";
}
]]>
</mx:Script>
<mx:Panel
title="My Application" horizontalAlign="center"
paddingTop="10" paddingBottom="10" paddingLeft="10" paddingRight="10" >
<mx:Label id="myLabel" width="180" fontWeight="bold" fontSize="24"/>
<mx:Button id="myButton" label="Click Me!" click="clickHandler(event);" />
</mx:Panel>
</mx:Application>


在MXML中创建一个内联(inline)的事件处理器
有时响应事件的最简单的方法就是完全在一个组件的MXML声明中定义事件处理器。这就是使用一个内联(inline)的事件处理器。
在下面的例子中,你设定了<mx:Button>标签的click属性,所以它可以直接设定Label控件的text属性,而不需要调用一个事件处理器方法。
__________________________________________________________________________________

提示:使用内联事件处理器可能比较快而且代码较少,但是它也可以影响代码的易读性,可维护性和可扩展性。一个好的经验法则就是不要在内联事件处理器中包含一条语句以上的ActionScript。如果你必须包含更复杂的逻辑,就把它放到一个ActionScript helper方法(即第一种方法)或者一个ActionScript事件处理器(即第三种方法)中。
示例
<?xml version="1.0" encoding="utf-8"?>
<mx:Application
xmlns:mx="
http://www.adobe.com/2006/mxml"
viewSourceURL="src/HandlingEventsInlineMethod/index.html"
horizontalAlign="center" verticalAlign="middle"
width="300" height="200">
<mx:Panel
title="My Application" horizontalAlign="center"
paddingTop="10" paddingBottom="10" paddingLeft="10" paddingRight="10">
<mx:Label id="myLabel" width="180" fontWeight="bold" fontSize="24"/>
<mx:Button id="myButton" label="Click Me!" click="myLabel.text = &apos;Hello, World!&apos;" />
</mx:Panel>
</mx:Application>
__________________________________________________________________________________


通过ActionScript注册一个事件监听器
你也可以通过使用ActionScript注册一个事件处理器来响应事件。
在这个例子中,使用ActionScript中的addEventHandler() 方法注册了一个事件监听器。这个addEventHandler()方法被放在了用来处理Application容器的creationComplete事件的事件处理器中。
提示:程序开始运行的时候,在Application的外观和它的子组件初始化完毕之后,Application的creationComplete事件就会发生。creationComplete事件的处理器提供了一个很方便的地方来放置注册事件监听器的ActionScript代码。
示例
<?xml version="1.0" encoding="utf-8"?>
<mx:Application
xmlns:mx="
http://www.adobe.com/2006/mxml"
viewSourceURL="src/HandlingEventsActionScript/index.html"
horizontalAlign="center" verticalAlign="middle"
width="300" height="200"
creationComplete="creationCompleteHandler(event);">
<mx:Script>
<![CDATA[
import flash.events.MouseEvent;
import mx.events.FlexEvent;
private function creationCompleteHandler(event:FlexEvent):void
{
// Listen for the click event on the Button control
myButton.addEventListener (MouseEvent.CLICK, clickHandler);
}
private function clickHandler ( event:Event ):void
{
myLabel.text = "Hello, World!";
}
]]>
</mx:Script>
<mx:Panel
title="My Application" horizontalAlign="center"
paddingTop="10" paddingBottom="10" paddingLeft="10" paddingRight="10">
<mx:Label id="myLabel" width="180" fontWeight="bold" fontSize="24"/>
<mx:Button id="myButton" label="Click Me!" />
</mx:Panel>
</mx:Application>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值