`
ycy303
  • 浏览: 194434 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Flex 3 cookbook翻译: 2.1 监听Button的Click事件

    博客分类:
  • flex
阅读更多

 

2 菜单和控件

 

Flex3 SDK 提供了一个大的预定义 UI 控件库,这加快了程序开发。通过 ActionScript 或者 MXML 改变他们的属性,你可以很容易地控制这些控件的行为,同时你也可以用 CSS 来改变他们的外观。另外,由于 ActionScript 3 是一种成熟的 OOP 语言,所以你可以像通常的 OOP 语言一样,扩展这些默认的控件,来提供自定义的功能。

Flex 3 SDK 提供的控件位于 mx.controls 包。在写这本书的时候, mx.controls 包里面有超过 50 个控件。他们为建构丰富的用户界面提供模块。

 

2.1 监听 Button Click 事件

 

2.1.1 问题

 

 

你需要对用户行为作出反应,执行一个任务。比如用户点击一个按钮时输出一列姓名。

 

 

2.1.2 解答

 

 

MXML 里,用 <mx:Button> 标签的 click 事件属性来为 click 事件指派一个事件处理器。另外,在 ActionScript 里用 button 实例的 addEventListener 方法来为 click 事件指派一个侦听器。

 

 

2.1.3 讨论

 

 

下面的代码显示了怎样监听一个 button click 事件。这里用 MXML <mx:Button> 标签的 click 事件属性指派一个事件处理器。

 

<mx:Application
    xmlns:mx="http://www.adobe.com/2006/mxml"
    layout="vertical">

    <mx:Button id="btn" label="Show Names" click="showNames(event)"/>

    <mx:Script>
        <![CDATA[

            private function showNames(evt:MouseEvent):void
            {
                var temp:Array = new Array("George","Tim","Alex","Dean");
                trace(temp.toString());
            }
        ]]>
    </mx:Script>

</mx:Application>

 

以上代码创建了一个应用。这个应用包含了一个 button 控件的实例 btn. 为了让这个应用中当 btn 被点击时,能够输出一串人名到控制台, btn 实例的点击事件属性与 showNames 方法建立了连接:

<mx:Button id="btn" label="Show Names" click="showNames(event)"/>

每当用户点击按钮, flex 框架会派发一个类型为 MouseEvent.CLICK 的事件,上面一行代码会指派 showNames 方法来响应这个事件。在 showNames 内,一个 names 数组被创建并输出到控制台。注意一个 MouseEvent 类型的事件对象被自动传递进这个事件处理器函数。基于被派发的事件,从这个对象可以得到关于这个事件本身的一些信息。在调试模式(在 Eclipse 里用 F11 )下运行这个应用,你会在 Console 窗口看到如下的输出:

George,Tim,Alex,Dean

 

 

事件侦听器也可以用 ActionScript 指定。下面的例子用 ActionScript 指定了 showNames showTitles 作为 btn 的侦听器。

 

<mx:Application
    xmlns:mx="http://www.adobe.com/2006/mxml"
    layout="vertical"
    creationComplete="initApp(event);">

    <mx:Button id="btn" label="Show Names"/>

    <mx:Script>
        <![CDATA[
            import mx.events.FlexEvent;

            private function initApp(evt:FlexEvent):void
            {
                btn.addEventListener(MouseEvent.CLICK,showNames);
                btn.addEventListener(MouseEvent.CLICK,showTitles);
            }

            private function showNames(evt:MouseEvent):void
            {
                var temp:Array = new Array("George","Tim","Alex","Dean");
                trace(temp.toString());
            }

            private function showTitles(evt:MouseEvent):void
            {
                var temp:Array = new Array("Director","Vice-President","President",
"CEO");
                trace(temp.toString());
            }

        ]]>
    </mx:Script>

</mx:Application>

                                   

 

注意 application creationComplete 事件被用来让按钮的 click 事件与两个侦听器关联: showNames showTitles 。如下所示:

 

private function initApp(evt:FlexEvent):void
{
    btn.addEventListener(MouseEvent.CLICK,showNames);
                btn.addEventListener(MouseEvent.CLICK,showTitles);
}
 

 

debug 模式运行这个 application ,你会在 Console 窗口中得到如下输出:

George,Tim,Alex,Dean
Director,Vice-President,President,CEO

 

 

侦听器被呼叫的次序与他们被注册的次序是一样的。由于 showNames showTitles 先注册,姓名队列就要比标题队列先产生。如果要改变执行次序,或者改变他们的注册次序,或者采用更好的办法,在注册他们的时候就设置他们的优先级:

private function initApp(evt:FlexEvent):void {
    btn.addEventListener(MouseEvent.CLICK,showNames,false,0);
    btn.addEventListener(MouseEvent.CLICK,showTitles,false,1);       
} 

 

debug 模式运行修改后的代码 , 显示如下:

Director,Vice-President,President,CEO
George,Tim,Alex,Dean

 

 

以较大的优先级数值注册的侦听器会更早被调用。如果有相同优先级数值的侦听器不止一个,执行的顺序就基于他们被注册的顺序。

分享到:
评论
1 楼 playfish 2009-03-20  

支持楼主翻译,辛苦了.

相关推荐

    Flex 3 Cookbook简体中文版最新推荐常青

    Flex 3 Cookbook 简体中文版是一本专注于Flex 3技术的实用指南,由翻译协作组精心编译并免费传播。这本书旨在帮助开发者深入理解和应用Flex 3框架,包括ActionScript和MXML这两个核心组成部分。 ActionScript是Flex...

    Flex 3 Cookbook[中文版].pdf

    &lt;mx:Button label="Click Me" click="handleButtonClick(event)" /&gt; &lt;mx:Label id="label" text="Count: 0" /&gt; &lt;/mx:Application&gt; ``` - **ActionScript 中的 MXML**:虽然 MXML 文件可以包含 ActionScript 代码...

    flex3 cookbook.rar

    7. **事件驱动编程**: 通过事件监听和处理,Flex实现了响应式的用户交互。 8. **Services**: Flex可以轻松连接到各种数据源,如AMF、SOAP、RESTful服务,实现数据的获取和发送。 9. **图形和动画**: Flex提供强大...

    Flex 3 Cookbook.Flex 3 Cookbook.Flex 3 Cookbook.Flex 3 Cookbook.Flex 3 Cookbook.

    Flex 3 Cookbook 是一本专注于Adobe Flex 3技术的实用指南,旨在帮助开发者深入理解和应用Flex 3框架。Flex 3 是一个用于构建富互联网应用程序(RIA)的开发平台,它结合了MXML和ActionScript 3.0,使得UI设计和编程...

    Flex3 CookBook 教程

    《Flex3 CookBook 教程》是一本专为开发者准备的深入指南,旨在帮助读者掌握Adobe Flex 3这一强大的富互联网应用程序(RIA)开发框架。Flex 3是用于构建交互式、高性能的Web应用程序的开源工具,它基于ActionScript ...

    Flex4 Cookbook

    &lt;mx:Button label="Click Me" click="handleClick(event)" /&gt; &lt;mx:Script&gt; &lt;![CDATA[ protected function handleClick(event:MouseEvent):void { trace("Button clicked!"); } ]]&gt; &lt;/mx:Script&gt; ``` - **...

    Flex中文帮助+Flex3cookbook中文版

    这个压缩包包含了“Flex中文帮助”和“Flex3Cookbook中文版”,是初学者入门Flex开发的重要参考资料。 Flex中文帮助是针对Flex SDK的官方文档的中文翻译版,它详细介绍了Flex框架的各种组件、类库、API以及编程模型...

    Flex 3 Cookbook.rar

    《Flex 3 Cookbook》是一本专注于Adobe Flex 3开发的实用指南,对于想要深入学习和掌握Flex技术的开发者来说,是一份不可多得的资源。这本书由经验丰富的作者撰写,其翻译质量高,内容准确,避免了常见的翻译错误,...

    flex4 cookbook4

    ##### 3.1 MXML中的事件监听器添加 - **语法**:`(eventObject: Event)"/&gt;` - **示例**:`&lt;Button label="Click Me" click="handleClick(event)"/&gt;` - **解释**:当用户点击按钮时,将触发`handleClick`函数,并...

    Flex 3 Cookbook.pdf

    Flex 3 Cookbook 是一本专注于Flex 3开发的实用指南,主要涵盖了使用Flex 3框架进行应用开发的各种技术和方法。Flex 3是一个由Adobe推出的富互联网应用程序(RIA)开发平台,它结合了MXML和ActionScript两种语言,...

    Flex 3 cookbook 2008

    Flex 3 Cookbook by Joshua Noble; Todd AndersonPublisher: O'ReillyPub Date: May 6, 2008 Print ISBN-13: 978-0-596-52985-7 Pages: 704 The best way to show off a powerful new technology is to demonstrate...

    Flex 3 CookBook 简体中文

    Flex 3 CookBook 简体中文是一本专注于Flex 3技术的中文资源,由翻译协作组共同完成,旨在帮助开发者理解和应用Flex 3。这本书强调了ActionScript和MXML这两种编程语言在Flex应用程序中的核心作用。 ActionScript是...

    Flex 4 Cookbook 英文版( pdf 非影印版)

    《Flex 4 Cookbook》是一本由Joshua Noble、Todd Anderson、Garth Braithwaite、Marco Casario 和 Rich Tretola 联合编写的英文书籍,由著名的O'Reilly Media出版,专注于Flex 4技术的实用教程。本书旨在帮助读者...

    Flex 3 Cookbook代码.rar

    Cookbook的代码可能包含各种事件监听和触发的例子,如用户交互事件、数据改变事件等。 6. **服务与数据通信**:Flex 3可以轻松与后端服务器进行通信,如使用HTTPService、WebService或AMF通信。这部分的代码可能...

Global site tag (gtag.js) - Google Analytics