2010年7月23日 星期五

Flex_自訂事件

當我們開始使用自訂元件後,就會發現一個很嚴重的問題:既有的事件沒辦法傳遞自訂元件內的物件,因為我們所撰寫的元件會傳遞出怎樣的物件(ValueObject)只有設計的人知道,所以既有事件當然就無法處理這樣的狀況,所以我們必須要自訂事件。

當然自訂事件就像是自訂元件一樣,不可能從頭寫到尾,我們會尋找一個既有的事件(Event)來繼承,並且加上自己需要傳遞的內容。而當中有一些需要注意的事項:

1. 繼承既有事件後,必須在建構子加上Type屬性,用以記載所傳遞的事件名稱。(該名稱為之後使用事件時的名稱,就類似Click這樣的名稱)
2. 因為是繼承其他事件,所以在建構子內必須要加入super函式,並且要將事件名稱傳遞給他,所以應增加super(type);並且於建構子內增加其他需要額外傳入的參數(通常為自訂的ValueObject)。
3. 覆寫clone函式。clone函式是於事件上浮階段時,將所傳遞的事件複製到下一層級的方法,所以覆寫的原因是:避免在上浮階段我們所額外傳遞的物件會丟失。可以參考下圖,如果沒進行覆寫,按鈕會成功傳遞自訂事件,但經過clone函式複製事件要繼續往上傳時,會發現事件回復為所繼承之事件。

完成自訂事件後,當然就是使用方式,流程有三項:
1. 實體化自訂的事件,並且傳入適當的參數。
2. 利用dispatchEvent將事件傳遞出去。
3. 於Metadata標籤內定義Event標籤,以讓編譯器知道有這一個事情。(若是不做也可以正常執行,但就不能透過"."來查看到自訂事件)。



-------------------------------------------------
這週所上的自訂元件、ValueObject、自訂事件真是太精采了,第七章值得多讀幾次。 XD

2 則留言:

匿名 提到...

是上anistar老師的課嗎?
程式碼有點眼熟..呵呵。

ola的家 提到...

對呀!anistar的課!敎的真是太好了!@O@

張貼留言