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技术的实用指南,由翻译协作组精心编译并免费传播。这本书旨在帮助开发者深入理解和应用Flex 3框架,包括ActionScript和MXML这两个核心组成部分。 ActionScript是Flex...
7. **事件驱动编程**: 通过事件监听和处理,Flex实现了响应式的用户交互。 8. **Services**: Flex可以轻松连接到各种数据源,如AMF、SOAP、RESTful服务,实现数据的获取和发送。 9. **图形和动画**: Flex提供强大...
5. **事件处理**:深入理解事件模型,包括事件的派发、监听和处理,以实现用户交互响应。 6. **服务连接与数据集成**:如何使用Flex连接各种后台服务,如AMF(Action Message Format)、WebServices、XML,进行数据...
3. **事件处理**:书中会涵盖如何监听和响应各种用户交互事件,以实现应用的动态响应。 4. **组件开发**:对于希望自定义组件的开发者,书中有详细的指导,如何从头开始创建自定义的Flex组件。 5. **服务连接**:...
通过监听和处理事件,开发者可以响应用户的操作,实现动态响应。 4. **数据绑定**:Flex支持数据绑定,使得UI元素的状态可以直接与数据模型关联,当数据变化时,界面会自动更新,反之亦然。 5. **Services和...
- **ActionScript编程**:讲解如何使用ActionScript语言增强Flex应用的功能,包括事件处理、网络通信和数据操作等。 - **性能优化**:提供了一系列技巧和策略,帮助开发者优化Flex应用的加载速度和运行效率。 - **跨...
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...
4. **图形和动画**:Flex 3提供了丰富的绘图API和Timeline控制,可以创建复杂的图形和动态效果。书中会教授如何利用这些功能来提升用户交互体验。 5. **服务集成**:通过AMF、SOAP或RESTful方式,Flex 3能够轻松地...
Flex 3 Cookbook 是一本专注于Adobe Flex 3技术的实用指南,旨在帮助开发者深入理解和应用Flex 3框架。Flex 3 是一个用于构建富互联网应用程序(RIA)的开发平台,它结合了MXML和ActionScript 3.0,使得UI设计和编程...
1. **Flex 3基础**:Flex 3是Adobe推出的用于构建RIA的开源框架,基于ActionScript 3.0编程语言,提供强大的组件库和MXML标记语言,使得开发者可以构建交互性强、视觉效果丰富的Web应用程序。 2. **MXML与...
2. **MXML与ActionScript 3**:Flex 3使用MXML作为声明式语言构建用户界面,同时结合ActionScript 3作为脚本语言处理逻辑。书中会详细解释这两种语言的语法和用法,以及它们之间的交互。 3. **组件库**:Flex 3拥有...
《Flex3 Cookbook》是针对Adobe Flex 3这一版本的开发指南,它包含了丰富的代码示例和实践教程,帮助开发者深入理解和应用Flex技术。这个完整版的资源包括了源码、范例XML数据以及Bonus Chapter的代码,对于学习和...
3. **数据绑定**:Flex 3支持强大的数据绑定机制,允许UI元素和数据模型之间自动同步。这部分的代码可能会讲解如何实现双向数据绑定,以及如何处理数据变化的事件。 4. **图形与动画**:Flex 3提供了强大的绘图API...
《Flex3 Cookbook》一书由Joshua Noble与Todd Anderson共同编写,是Adobe Developer Library系列的一部分,该系列由O'Reilly Media Inc.与Adobe Systems Inc.合作出版,旨在为使用Adobe技术的开发者提供权威资源。...
- **1.8 使用自定义事件和分派**:如何创建和分派自定义事件以增强应用程序的功能性。 #### 四、知识点详解 ##### 1.1 创建 Flex 项目 - **环境搭建**:确保安装了最新版本的 Flash Builder 或 Eclipse IDE for ...