處理事件的基本概念Flash Player 9 以及更新的版本,Adobe AIR 1.0 以及更新的版本 您可以將事件想成是 SWF 檔中發生的任何狀況,它們都想要向身為程式設計人員的您傳達一些重要訊息。例如,大多數的 SWF 檔都支援某些使用者互動 (包括像是回應滑鼠按一下的動作這種簡單的互動,或像是接受並處理輸入至表單中的資料這種較為複雜的互動) 功能。因此,任何這類與 SWF 檔進行的使用者互動,都視為一個事件。事件也會在不直接與使用者進行互動的情況下發生,例如從伺服器完成載入資料,或連接的攝影機變成使用中狀態。 在ActionScript 3.0 中,每一個事件都會由事件物件所表示,而事件物件就是 Event 類別或其子類別的實體。事件物件不只會儲存關於特定事件的資訊,也包含了協助處理此事件物件的方法。例如,當 Flash Player 或 AIR 偵測到滑鼠按一下的動作時,便會建立事件物件 (MouseEvent 類別的實體) 來表示該特定的滑鼠按一下事件。 在建立事件物件之後,Flash Player 或 AIR 便會「傳送」該事件物件,這表示會將該事件物件傳遞給做為該事件之目標的物件。其中,做為所傳送事件物件之目的地的物件,便稱為「事件目標」。例如,當連接的攝影機成為使用中狀態,Flash Player 便會直接將事件物件傳送給事件目標 (在此情況下則是代表攝影機的物件)。但是,如果該事件目標位於顯示清單中,則事件物件會向下傳遍顯示清單架構,直到到達該事件目標為止。在某些情況下,該事件物件接著便會沿著相同的路線,在顯示清單架構中向上「反昇」。這種顯示清單架構的移動方式便稱為「事件流程」。 您可以使用事件偵聽程式,「偵聽」程式碼中的事件物件。「事件偵聽程式」是您撰寫用來回應特定事件的函數或方法。若要確保程式會對事件做出回應,您必須將事件偵聽程式加入至事件目標,或加入至任何顯示清單物件 (為事件物件之事件流程的一部分) 中。 不管您在何時撰寫事件偵聽程式程式碼,它都會遵循此基本結構 (呈現粗體的元素代表您將在特定個案中填入的預留位置): function eventResponse(eventObject:EventType):void { // Actions performed in response to the event go here. } eventTarget.addEventListener(EventType.EVENT_NAME, eventResponse); 此程式碼會執行兩個動作:首先會定義函數,以指定要執行的動作來回應事件。接著會呼叫來源物件的 addEventListener() 方法,即由指定的事件「訂閱」函數,當事件發生時,就會執行函數的動作。當事件真的發生時,事件目標就會檢查已註冊為事件偵聽程式的所有函數與方法清單。接著,它會輪流呼叫每個函數與方法,並將事件物件做為參數傳遞過去。 您需要更改此程式碼中的四個項目,以建立自己的事件偵聽程式。首先,您必須將函數名稱變更為自己想要使用的名稱 (您必須在兩個地方找到有「eventResponse」字樣的程式碼並加以變更)。再者,您必須為事件物件指定適當的類別名稱,而該事件物件是由您想要偵聽的事件負責傳送 (就是程式碼中的「EventType」);同時,您必須為特定事件 (清單中的「EVENT_NAME」) 指定適當的常數。第三,您必須在即將傳送事件的物件上呼叫 addEventListener() 方法 (在此程式碼中為「eventTarget」)。或者,您也可以變更當做函數參數使用的變數名稱 (在此程式碼中為「eventObject」)。 重要概念與術語下列參考清單包括撰寫事件處理常式時會遇到的相關重要術語:
|
|