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