首页 > 网站 > WEB开发 > 正文

2.14.处理focusIn和focusOut事件

2024-04-27 13:51:47
字体:
来源:转载
供稿:网友
2.14.1. 问题
我想要在用户聚焦在一个标签上时,显示一个弹出窗口,并且当用户离开聚焦的时候关闭这个弹出窗口。
2.14.2. 解决办法
使用focusIn 和focusOut 事件(在InteractiveObject 类的子类的所有实例都可用)来调用PopUpManager 相关的方法。
2.14.3. 讨论
在用户聚焦时启动一个窗口,你可以重用前两节的代码。不过就是把弹出窗口的启动从用户点击LInkButton 切换到通过focusIn 事件来创建而已。组件接受到聚焦的时候就会发布focusIn 事件,例如当用户按tab 切换到组件上或者点击了它。focusIn 事件的处理代码只需要在之前章节的内容添加一点:
+展开
-ActionScript
systemManager.removeFocusManager(IFocusManagerContainer(popup))

对应的上下文:
+展开
-XML
<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute">

<mx:Canvas horizontalCenter="0verticalCenter="0">
<mx:LinkButton id="lbllabel="Topx="100y="10"
focusIn="showDetail(event)focusOut="closePopUp()"/>

<mx:LinkButton label="Leftx="10y="100"
focusIn="showDetail(event)focusOut="closePopUp()"/>

<mx:LinkButton label="Bottomx="100y="200"
focusIn="showDetail(event)focusOut="closePopUp()"/>

<mx:LinkButton label="Rightx="200y="100"
focusIn="showDetail(event)focusOut="closePopUp()"/>

<mx:Canvas width="100height="100x="125y="40"
backgroundColor="#ff0000rotation="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>
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表