随笔 - 8  文章 - 55  trackbacks - 0
<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

常用链接

留言簿(6)

随笔分类

随笔档案

文章分类

文章档案

朋友的Blog

最新评论

阅读排行榜

评论排行榜

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

只有注册用户登录后才能发表评论。


网站导航: