【发布时间】:2012-10-02 19:52:11
【问题描述】:
我离开一段时间后将返回 Flex/AIR,所以这可能是一个非常基本的问题。
我有一个基于窗口的桌面 AIR 应用程序。它有一个侧边栏/控制面板类型的功能,在用户将鼠标 X 移动到舞台/窗口左侧 220,它就会隐藏。简单。
我遇到了一个愚蠢的问题,用户可以将鼠标太快地向左移动,越过窗口的左侧,而我打开侧边栏的例程不会被调用。我尝试过单独或组合使用 ENTER_FRAME、MOUSE_MOVE 和 MOUSE_OUT,但仍然很容易让侧边栏例程失败。
this.stage.addEventListener(Event.ENTER_FRAME, controlPanelDisplayHandler);
this.stage.addEventListener(MouseEvent.MOUSE_MOVE, controlPanelDisplayHandler);
this.stage.addEventListener(MouseEvent.MOUSE_OUT, controlPanelDisplayHandler);
在我显示/隐藏侧边栏的例程中,我看到了 ENTER_FRAME 事件的痕迹,但它保留了在鼠标离开窗口之前它知道的最后一个 mouseX 位置,而不是桌面矩形内的当前鼠标位置.
我似乎记得在这方面有一些安全问题,但已经有一段时间了。谁能建议我可以完成这个简单功能的方法?
private function controlPanelDisplayHandler(event:Event):void
{
trace("mouseX" + this.stage.mouseX);
if (sidebarDisplayed == false){
if (mouseX <= 5){
sidebarDisplayed = true;
showSidebar();
}
} else if (sidebarDisplayed == true){
if (mouseX >= 240){
sidebarDisplayed = false;
hideSidebar();
}
}
【问题讨论】:
-
可以帮助以下链接:-blog.flexexamples.com/2008/02/22/…
-
@MaheshParate - 成功了,谢谢!
标签: apache-flex air flex4 flex4.5