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

Flex 3 cookbook翻译: 2.14 处理focusIn和focusOut事件

    博客分类:
  • flex
阅读更多

2.14 处理 focusIn focusOut 事件

2.14.1 问题

当用户的焦点在一个标签控件上时,你想显示一个弹出窗口,而当用户焦点离开该标签控件时,弹出窗口关闭。

2.14.2 解答

focusIn focusOut 事件(所有继承自 InteractiveObject 的类的实例均有该事件)去执行 PopUpManager 的恰当的方法。

2.14.3 讨论

基于用户焦点来触发窗口,你可以修改先前的两个方法。以前是当用户单击 LinkButton 时弹出窗口,现在改成由 focusIn 事件触发。当组件接收到焦点时,就触发一个 focusIn 事件。比如当用户用 tab 键跳到该控件,或者用鼠标点击该控件。 focusIn 事件的处理代码添加了如下内容:

    systemManager.removeFocusManager(IFocusManagerContainer(popup))
译者注:移除这句代码,如果用鼠标交互,不影响程序运行效果。如果用 tab 键切换焦点,就会出现错误。

这儿是代码:

 

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

    <mx:Canvas horizontalCenter="0" verticalCenter="0">
        <mx:LinkButton id="lbl" label="Top" x="100" y="10" focusIn="showDetail(event)"
 focusOut="closePopUp()"/>
        <mx:LinkButton label="Left" x="10" y="100" focusIn="showDetail(event)"
focusOut="closePopUp()"/>
        <mx:LinkButton label="Bottom" x="100" y="200" focusIn="showDetail(event)"
focusOut="closePopUp()"/>
        <mx:LinkButton label="Right" x="200" y="100" focusIn="showDetail(event)"
focusOut="closePopUp()"/>
        <mx:Canvas width="100" height="100" x="125" y="40"
            backgroundColor="#ff0000" rotation="45">
        </mx:Canvas>
    </mx:Canvas>

    <mx:Script>
        <![CDATA[
            import mx.managers.IFocusManagerContainer;
            import mx.managers.PopUpManager;

            private const POPUP_OFFSET:int = 10;

            private var popup:CustomPopUp;

            private function showDetail(evt:FocusEvent):void {
                // create the popup
                popup = CustomPopUp(PopUpManager.createPopUp(this,CustomPopUp,false));
                popup.message = "This is the detail for " + evt.target.label;

                // position the popup
                var pt:Point = new Point(0, 0);
                pt = evt.target.localToGlobal(pt);
                popup.x = pt.x  + POPUP_OFFSET;
                popup.y = pt.y  + evt.target.height + POPUP_OFFSET;

                systemManager.removeFocusManager(IFocusManagerContainer(popup))
            }

            private function closePopUp():void {
                PopUpManager.removePopUp(popup);
            }

        ]]>
    </mx:Script>
</mx:Application>
 

 

当一个弹出窗口被创建时,默认地, SystemManager 触发 FocusManager ,让它与该弹出窗口关联起来。并让焦点循环(控制 tab 键顺序)基于刚被创建的弹出窗口。在本例中,我们期望一种不同的行为:当用户焦点移出一个弹出窗口(例如,用 tab 键使焦点移出该控件),该窗口应当被关闭。从 SystemManager 里移除弹出窗口的 FocusManager 能实现这一点,并能让整个应用的 FocusManager 重新起作用。 focusOut 事件的处理器 closePopUp 包含了关闭弹出窗的逻辑。当应用运行起来后,反复按 tab 键,焦点会在这些 LinkButton 之间循环,而且相应的弹出窗会被创建或移除。

 

分享到:
评论

相关推荐

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

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

    flex3 cookbook.rar

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

    Flex3 CookBook 教程

    5. **事件处理**:深入理解事件模型,包括事件的派发、监听和处理,以实现用户交互响应。 6. **服务连接与数据集成**:如何使用Flex连接各种后台服务,如AMF(Action Message Format)、WebServices、XML,进行数据...

    Flex 3 Cookbook.rar

    3. **事件处理**:书中会涵盖如何监听和响应各种用户交互事件,以实现应用的动态响应。 4. **组件开发**:对于希望自定义组件的开发者,书中有详细的指导,如何从头开始创建自定义的Flex组件。 5. **服务连接**:...

    Flex中文帮助+Flex3cookbook中文版

    通过监听和处理事件,开发者可以响应用户的操作,实现动态响应。 4. **数据绑定**:Flex支持数据绑定,使得UI元素的状态可以直接与数据模型关联,当数据变化时,界面会自动更新,反之亦然。 5. **Services和...

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

    - **ActionScript编程**:讲解如何使用ActionScript语言增强Flex应用的功能,包括事件处理、网络通信和数据操作等。 - **性能优化**:提供了一系列技巧和策略,帮助开发者优化Flex应用的加载速度和运行效率。 - **跨...

    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 简体中文

    4. **图形和动画**:Flex 3提供了丰富的绘图API和Timeline控制,可以创建复杂的图形和动态效果。书中会教授如何利用这些功能来提升用户交互体验。 5. **服务集成**:通过AMF、SOAP或RESTful方式,Flex 3能够轻松地...

    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 中文版

    1. **Flex 3基础**:Flex 3是Adobe推出的用于构建RIA的开源框架,基于ActionScript 3.0编程语言,提供强大的组件库和MXML标记语言,使得开发者可以构建交互性强、视觉效果丰富的Web应用程序。 2. **MXML与...

    Flex 3 Cookbook 中文版

    2. **MXML与ActionScript 3**:Flex 3使用MXML作为声明式语言构建用户界面,同时结合ActionScript 3作为脚本语言处理逻辑。书中会详细解释这两种语言的语法和用法,以及它们之间的交互。 3. **组件库**:Flex 3拥有...

    flex3 cookbook 源码 完整版

    《Flex3 Cookbook》是针对Adobe Flex 3这一版本的开发指南,它包含了丰富的代码示例和实践教程,帮助开发者深入理解和应用Flex技术。这个完整版的资源包括了源码、范例XML数据以及Bonus Chapter的代码,对于学习和...

    Flex 3 Cookbook代码.rar

    3. **数据绑定**:Flex 3支持强大的数据绑定机制,允许UI元素和数据模型之间自动同步。这部分的代码可能会讲解如何实现双向数据绑定,以及如何处理数据变化的事件。 4. **图形与动画**:Flex 3提供了强大的绘图API...

    flex3 cookbook 英文版pdf

    《Flex3 Cookbook》一书由Joshua Noble与Todd Anderson共同编写,是Adobe Developer Library系列的一部分,该系列由O'Reilly Media Inc.与Adobe Systems Inc.合作出版,旨在为使用Adobe技术的开发者提供权威资源。...

    Flex4 Cookbook

    - **1.8 使用自定义事件和分派**:如何创建和分派自定义事件以增强应用程序的功能性。 #### 四、知识点详解 ##### 1.1 创建 Flex 项目 - **环境搭建**:确保安装了最新版本的 Flash Builder 或 Eclipse IDE for ...

Global site tag (gtag.js) - Google Analytics