關於flex自定義事件的理解

2021-06-03 02:30:25 字數 2136 閱讀 9480

你可以這樣理解事件類:

1.第一步,首先忘記你學到的任何關於事件類的知識,不知道有這麼一回事,然後只知道flash有個內建類,名叫event

2.第二步,來看這個類有什麼——它有很多很多常數屬性,比如complete,close,clear等等。那麼,這些引數幹什麼用的呢?很明確的告訴你,flash已經用掉了,用來標記一些flash已經設計好的事件——完成某件事、關閉某個東西、清除某個東西。

3.第三步,來看這個類能幹什麼——這些已經被標記好的事件,通常在一些常用內建類裡面已經被註冊好了。比如,loader類用complete表示完成了讀取。當你想用到這個事件時,只需要在用的地方把這個事件調出來就行了——怎麼調呢?addeventlistener(事件的標記,觸發標記後要做的事情)。

4.第四步,flash提供的這些事件不夠我用怎麼辦?好辦,自己來做乙個事件唄!——怎麼做?那你首先得讓flash知道你這是個事件吧——事件的標記方法是內建事件類已經做好了,至於怎麼實現那就不是你操心的事了,反正繼承了event就是乙個事件,這就對了。所以,你需要做的第一件事就是先把flash強大的event給繼承出來。假設這個事件叫cevent!

public class cevent extends event

}5.第五步,繼承出來以後怎麼辦?「flash怎麼做的,我就怎麼做唄!」是的,那邊的小朋友很聰明,flash是怎麼做的?對了,先新增乙個標記。與flash一樣,你在這個繼承的類裡宣告了乙個常數,為了遵從偉大的程式設計師們的傳統,他們說常數最好用大寫,你也就用了大寫,假設是「mygod」。但同時,為了尊從偉大的flash的傳統,我給了這個常數乙個字串的值-「mygod」(其實,如果你不尊重傳統也無所謂,標記是什麼?標記跟你的名字一樣,就是讓別人認得你而已,你說你叫「123456」,那麼我說「123456」的時候就是指你)

於是,乙個事件的標記就出來了:

public static const mygod:string="mygod";

6.第六步,事件就這樣定義行了嗎?當然還不行!你的確聲稱你有個「mygod」事件,但關鍵是這個事件究竟是誰弄出來的?怎麼弄的?天知道你知道...但是flash不知道。所以,你就得告訴flash,這個事件是哪個無聊的類整出來的,是怎麼整出來的。假設某個無聊類叫god,god弄出了這個mygod事件,god是事情的元凶,因此你就必須指定這個元凶。而所有的事件元凶都乙個媽生的,這個媽叫「eventdispatcher」類,也是flash裡乙個內建類。現在簡單了吧~咱們繼續繼承。

public class god extends eventdispatcher

7.第七步,指定了元凶還是不行,他不肯承認他的罪行,因為你沒說他在什麼地方搞出了這個事件。所以,我得給他乙個函式,在這個函式中把這個事件點名出來。這樣它才是名副其實的事件傳送者。假設,god有個godispig函式,是專門搞這個事的函式,那麼就這麼來指證它。

public function godispig():void

這段**的意思就是,一旦你做godispig這件事(就是呼叫這個方法),你就觸發了mygod事件!

8,第八步,還沒完???!是的,當然還沒玩,上面這個god類僅僅是有了犯事的可能,但不能因為人家有可能出軌,我就說它出軌了吧。所以,正真觸發這件事的不是這個類本身,而是你在其他地方引用這個類,並呼叫這個函式時才會出事。那麼,用什麼方法呢?哈~那個小朋友又舉手了,好~你說!「flash怎麼做的,我就怎麼做唄!」哇!小朋友,你真是個天才啊!!!沒錯,用我們的老朋友addeventlistener(事件的標記,觸發標記後要做的事情)。具體點就是addeventlistener(cevent.mygod,觸發標記後要做的事情)。當我在某個類中例項化了god類,那麼這個例項一旦呼叫godispig這個函式,怎麼樣?!他就犯事了!!!!犯事要幹嘛?要執行「觸發標記後要做的事情」。此時,你要殺要砍要姦要搶就隨你便了,全部到那個觸發的事情裡面去做吧。——這就是事件,而且是標準的自定義事件...至於,你還要給這個事件填油加醋什麼的,也好辦,到你的自定義類裡面再寫幾個變數,比如info什麼的,

public function cevent(type:string,inf:string=""):void

這樣,當你註冊事件觸發函式時,就可以用dispatchevent(new cevent(cevent.mygod,引數))裡的這個引數再傳點什麼八卦的資訊出來,而一旦進入「觸發標記後要做的事情」中那個函式時,就可以用事件物件引數(假設為e:cevent)e來得到這個小道訊息了。

關於Flex中自定義事件

事件是乙個非常有用的功能,通常用於資訊傳遞互動大大提高程式編寫的靈活性。在高階語言中都會整合這方面特性 flex也不例外幾乎所有控制項中都整合了大量的事件,如果button的click事件等。但實際應用中控制項自有的事件是不能滿真實需要的,特別在自己編寫自定義控制項時,自定義控制項內部資訊的改變如何...

flex自定義事件

開始的時候不知道該怎麼寫自定義事件,怎感覺很麻煩,其實理解就不麻煩了。一 首先你要定義乙個事件,讓這個事件繼承event 放在events包下 建乙個events包 package events 二 你可以自定義元件使用這個事件,比如我定義乙個兩個按鈕的元件 event name aaa type ...

Flex自定義事件

size medium flex自定義事件的乙個重要用途是能夠把子容器中的資訊傳遞到父容器中。size parent.mxml son.mxml event name datachange type events.datachangeevent datachangeevent.as package ...