代码之家  ›  专栏  ›  技术社区  ›  spring

在基于桌面的应用程序中跟踪窗口外的鼠标?

  •  0
  • spring  · 技术社区  · 12 年前

    离开一段时间后,我将返回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();  
        }
    }
    
    1 回复  |  直到 12 年前
        1
  •  0
  •   Jason Sturges    12 年前

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

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