因爲這可能是一個非常基本的問題,所以我在回到Flex/AIR之後已經離開了一段時間。在基於桌面的應用程序中追蹤窗口外的鼠標?
我有一個基於窗口的桌面AIR應用程序。它具有側欄/控制面板類型功能,該功能在用戶將鼠標X移動到舞臺/窗口左側5個像素的<之前是隱藏的。然後,如果顯示側邊欄,如果用戶將鼠標移至> 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();
}
}
可以幫助下面的鏈接: - http://blog.flexexamples.com/2008/02/22/detecting-when-a-mouse-leaves-a-flex-application/ –
@MaheshParate - 工作,謝謝! –