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