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>
运行结果图示:
译注:由于文档中无法嵌入 SWF 文件,代码运行结果请查看原文中相应的部分。
在 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 =
'Hello, World!'" />
</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
{
clickHandler);
}
// Listen for the click event on the Button control
myButton.addEventListener (MouseEvent.CLICK,
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>
运行结果图示:
小编物语:本文援引
Dreamer's Blog
,特此感谢作者的努力。大家如果觉得这篇教程正是你所需要的话,请别忘了去作者的博客打打气啊。
posted on 2006-10-09 09:23
blog搬家了--[www.ialway.com/blog] 阅读(256)
评论(0) 编辑 收藏 所属分类:
Flex