0

离开一段时间后,我将返回 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();  
    }
}
4

1 回答 1

0

也是 Flex 的新手,可能没有帮助,但是您尝试过Event.MOUSE_LEAVE吗?

可能会给你同样的问题,但不确定。

于 2012-10-02T23:34:35.983 回答