离开一段时间后,我将返回 Flex/AIR,所以这可能是一个非常基本的问题。
我有一个基于窗口的桌面 AIR 应用程序。它有一个侧边栏/控制面板类型的功能,在用户将鼠标 X 移动到舞台/窗口左侧 < 5 px 之前,它会一直隐藏。然后,如果显示侧边栏,如果用户将鼠标 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();
}
}