2012-10-02 41 views
0

因爲這可能是一個非常基本的問題,所以我在回到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(); 
    } 
} 
+0

可以幫助下面的鏈接: - http://blog.flexexamples.com/2008/02/22/detecting-when-a-mouse-leaves-a-flex-application/ –

+0

@MaheshParate - 工作,謝謝! –

回答

0

Flex也是新來的,也可能沒有幫助,但你試過Event.MOUSE_LEAVE

可能會給你同樣的問題,雖然,不知道。

+0

感謝您的建議!我剛剛嘗試過,但結果相同:快速移動鼠標,事件似乎並未觸發。 Arrgh。愚蠢的小東西,應該很容易。希望明天有新鮮的眼睛,我會看到我正在做一些愚蠢的事情。 –

+0

讓它與MOUSE_LEAVE一起工作。 –

相關問題