偵聽視窗事件

Adobe AIR 1.0 以及更新的版本

若要偵聽視窗所傳送的事件,請用視窗實體登錄偵聽程式。例如,若要偵聽 closing 事件,請如下所示,以視窗登錄偵聽程式:

myWindow.addEventListener(Event.CLOSING, onClosingEvent); 

傳送事件時, target 屬性會參考視窗傳送該事件。

大部分視窗事件有兩則相關訊息。第一則訊息標示視窗變更即將發生 (且可以取消),而第二則訊息標示已發生變更。例如,當使用者按一下視窗的「關閉」按鈕時,就會傳送 closing 事件訊息。如果沒有偵聽程式取消該事件,視窗就會關閉,並傳送 close 事件給任何偵聽程式。

一般來說,警告事件 (如 closing ) 只有在使用系統顏色來觸發事件時才會傳送。例如,呼叫 window close() 方法不會自動傳送 closing 事件,而只傳送 close 事件。但是,您可以建構 closing 事件物件,並使用 window dispatchEvent() 方法加以傳送。

傳送 Event 物件的視窗事件如下:

事件

說明

activate

在視窗收到焦點時傳送。

deactivate

在視窗失去焦點時傳送。

closing

在視窗即將關閉時傳送。這只會在按下系統顏色「關閉」按鈕時自動發生,而在 Mac OS X 中,則是在叫用 Quit 命令時發生。

close

視窗已關閉時傳送。

傳送 NativeWindowBoundsEvent 物件的視窗事件如下:

事件

說明

moving

在視窗左上角變更位置之前,做為移動、調整大小或變更視窗顯示狀態的結果傳送。

move

在左上角已經變更位置之後傳送。

resizing

在視窗寬度或高度變更之前,做為調整大小或顯示狀態變更的結果傳送。

resize

在視窗已經變更大小之後傳送。

對於 NativeWindowBoundsEvent 事件,您可以使用 beforeBounds afterBounds 屬性,判斷即將完成或已完成變更前後的視窗邊界。

傳送 NativeWindowDisplayStateEvent 物件的視窗事件如下:

事件

說明

displayStateChanging

在視窗顯示狀態變更之前傳送。

displayStateChange

在視窗顯示狀態已變更之後傳送。

對於 NativeWindowDisplayStateEvent 事件,您可以使用 beforeDisplayState afterDisplayState 屬性,判斷即將變更或已完成變更前後的視窗顯示狀態。

在部分 Linux 視窗管理員中,最大化已設定最大大小的視窗時,並不會傳送顯示狀態變更事件 (視窗已設定為最大的顯示狀態,但未調整大小)。