教程
2.6事件監聽
事件有一個習氣,就是“拉幫結派”,正常情況下,某些對象是接收不到某些事件的,比方說一個動態文本就不能接受滑鼠事件。如果我們編寫這樣的代碼為一個動態文本指定事件處理代碼:
myTextField_txt.onMouseDown = function(){
}
當我們在它上面單擊滑鼠時,代碼並不會執行,因為它壓根就不會接收到滑鼠事件。要想讓它正確接受滑鼠事件,必須再加上這樣的代碼:
Mouse.addListener(myTextField);
這個語句就是讓myTextField向Mouse對象“報道”,這個語句執行之後,myTextField就具有了“監聽”滑鼠事件的功能了。 特別需要注意一點的,一旦某個對象被註冊為Mouse的監聽器,它將會接受到滑鼠發出的所有事件,不論發生事件時滑鼠是否在對象上方,根據這個原理,我們來製作一個小的滑鼠監視器。
首先向情境中添加兩個文本,上面一個靜態文本,下面一個動態文本,將動態文本命名為mousePosition_txt。
在影片的最後一幀上單擊,開啟指令碼面板,輸入這樣的代碼:
代碼很簡單,第一句停下影片準備接收事件,接下來將mousePostion_Txt註冊為接收滑鼠事件,然後使用事件處理函數的方法捕捉onMouseMove事件並將事件發生時的滑鼠位置顯示到mousePostion_txt中,以上這個小程式的執行效果如下圖。
除了監聽滑鼠事件之外,我們還可以監聽按鍵事件和情境事件:
Key.addListener (historyArray);
Stage.addListener (historyArray);
監聽器使用過之後可以使用removeListener將其刪除,例如:
Key.removeListener (historyArray);
Mouse.removeListener (historyArray);
Stage.removeListener (historyArray);
2.7小結
事件處理是互動特性和自動啟動並執行基礎,ActionScript所能處理的事件非常非常繁多,我們完全沒必要一個一個地去學習,因為這些事件的名稱和用途大多都是相當直觀的。比如處理滑鼠移動就是onMouseMove,處理滑鼠按鍵就是onMouseDown,等等,需要用的時候查一下手冊就可以輕鬆搞定。只不過onClipEvent事件要注意領會掌握,它的使用比較靈活。本章的結尾還介紹了使用事件處理函數為對象指定事件處理代碼的方法,應當儘可能地用這種方法處理事件,它可以讓你的程式結構更加清晰易讀。