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