我在离开一段时间后回到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位置,而不是桌面rect中的当前鼠标位置
我似乎记得围绕这个有一些安全问题,但已经有一段时间了。任何人都可以提出一种方法来完成这个简单的功能吗?
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();
}
}
答案 0 :(得分:0)
Flex也是新手,可能没什么帮助,但你尝过Event.MOUSE_LEAVE
吗?
虽然可能会给你同样的问题,但不确定。