Flash MX 2004 ActionScript圖文教程(十三)

- 中國WEB開發者網絡 (http://www.webasp.net)
-- 技術教程 (http://www.webasp.net/article/)
--- Flash MX 2004 ActionScript圖文教程(十三) (http://www.webasp.net/article/22/21331.htm)
-- 作者:未知
-- 發佈日期: 2005-04-30

  2.5事件處理函數

  說完了常用的事件,在來說說事件處理的兩種不同方式。前面介紹的事件處理代碼的方法是這樣添加的:首先,選擇將要捕獲事件的對象(影片剪輯實例或者按鈕),接著,打開腳本面板,然後編寫「on 事件名稱」的代碼。比方說,如果我們要讓一個影片剪輯實例捕捉mouseDown事件,那麼可以先在場景中選擇這個影片剪輯實例(假設其名稱為movieClip_mc),然後為其設置如下等的代碼。
  onClipEvent(mouseDown) {
  }
  這種方法用起來簡潔直觀,但是它有一個缺點是——交互性不足。怎麼說呢?這種方法建立起來的事件處理代碼是「固定」的,不能在程序運行的過程中動態更改。比方說,我們如果我們希望這個影片剪輯在影片播放到第10幀的時候使用某一段代碼來處理mouseDown事件,但是當影片播放到第20幀的時候,我們有需要另外一段代碼來處理mouseDown事件。這樣的應用你是不是沒有遇到過,來舉一個直觀的例子說,我們都使用過電視機的遙控器,電視機的遙控器上很多按鈕都是「多模態」的,也就是說,這些按鈕在不同的狀態下功能是不同的。調節聲音的按鈕在正常狀態下是用來提高和減小音量的,但是如果你進入了顏色設置模式時,按同樣的按鈕調節的不再是音量而是顏色了。
  仍然舉上面的例子來說明,如果我們在影片的某一個幀中加入這樣的代碼
  movieClip_mc.onMouseDown = function() {
  }
  就可以實現對事件處理代碼的動態切換了。這個語句比較特殊,它是說,將影片剪輯實例movieClip_mc的onMouseDown事件處理代碼用function()代替,而function()後面的大括號中就是新的事件處理代碼。你可以影片中多次使用這種方法,只要每次後面function()函數的內容不同就可以實現事件處理代面的動態調整了。需要注意的時候,使用這種方法定義事件處理代碼是,影片剪輯實例必須出現在場景中,當它從場景中消失後,事件處理代碼將會自動刪除,如果要再次使用,必須重新指定。如果想刪除時間的處理代碼可以使用 delete movieClip_mc.onMouseDown 這樣的語句。
  通常在編寫比較複雜的程序時,我們都傾向於使用事件處理函數來為場景中的對象設置事件處理代碼,因為這樣可以通過一條事件線將絕大多數代碼串起來,便於代碼的維護和調試。否則的話代碼分散在各個對象內部,容易使代碼顯得比較混亂,出了問題也不容易找出錯誤所在。


webasp.net