AS3 0教程 強大的事件機制 6

2021-08-25 03:44:20 字數 2005 閱讀 7466

事件機制寫的太多了,我自己都有點煩了。

但沒辦法,

[img]/uploads/allimg/080401/1843290.gif[/img]

,太重要了。而且as3做了這麼多好的改進,值得我們去一一探尋,給我們日後的程式設計帶來極大的便利。actionscript 初學者,本節可以跳過不看。

actionscript 2熟練工應當看看,有些價值。

今兒講掉

4. 合成eventdispatcher進行事件傳送。

5. 實現ieventdispatcher介面來進行事件傳送。 與設計模式中的裝飾器模式相似。

這樣事件的傳送和接受,就可以講完了。

那麼,事件部分就這樣完了?沒有!你暈,我也同暈。因為還有乙個很重要的特性,event flow機制還沒講。這就是我所說的事件冒泡機制。給我們程式設計帶來了莫大的方便。

好,下面先講:

[1b]4. 合成eventdispatcher進行事件傳送。[/1b]

什麼情況下用合成eventdispatcher來傳送event呢?

一般發生在某個較複雜的類裡面。

這個類可能是因為本身已經繼承了其它類,無法再繼承eventdispatcher。

如果僅僅是因為這個原因,那麼我更加建議[1b]使用 實現ieventdispatcher介面來進行事件傳送。[/1b]

但如果原因不止如此,比如,我們不願意這個類不是乙個單純事件傳送類,而是在執行某個方法(method),比如dosomething()時,附帶的傳送一些事件。

這些事件傳送者往往是這個類的組成部分,一些更小的類,通常是sprite等。

那麼用這種做法就比較合理。

看**例子

//【黑羽】actionscript 3.0系列教程

////以下為乙個名叫kingdasampleclass的document class,請自行和乙個fla繫結。

//如果忘了怎麼弄,看我第三篇教程

package

//偵聽器

private function lisfunc(evtobj:event):void

}import flash.events.eventdispatcher;

import flash.events.event;

class kingdaclass extends eventdispatcher

private function initsender():void

//呼叫乙個專門的方法(method)來返回傳送事件的eventdispatcher。

public function getsender():eventdispatcher

public function dosomething():void }}

[1b]5.實現ieventdispatcher介面來進行事件傳送。[/1b]

在哪種情況下使用?

類可能是因為本身已經繼承了其它類,無法再繼承eventdispatcher。

而我們恰恰希望它能實現eventdispatcher類所有功能,比如說addeventlistener, haslistener等等,看起來簡直和繼承eventdispatcher沒什麼分別。

那麼ok,我建議使用 實現ieventdispatcher介面來進行事件傳送。

[1b]其實質是乙個裝飾器模式(decorator),以對客戶端透明的方式擴充套件物件功能,是繼承關係的乙個替代方案。其關鍵在於擴充套件是完全透明的,使用起來和繼承父類幾乎沒什麼區別。

[/1b]

具體方法

由於ieventdispatcher需要實現5個介面,addeventlistener, haslistener, willtrigger,removeeventlistener,haseventlistener,那麼我們的裝飾類也必須實現這五個介面。

其餘看**

優點:1.類的使用者完全感覺不到差別

2.在被包裝的方法中還可以加入其它自己希望加進去的動作,比如,在addeventlistenr方法中可以再插入乙個計數,看看到底被add了多少次,超過某些次後,呼叫某個方法等等。

AS3 0教程 強大的事件機制 5

有兄弟反映,似乎as3的事件機制有些複雜。在我看來,程式設計上 複雜 這個詞一般有兩種定義 實現麻煩 或者內容眾多。as3中的事件機制其實現並不麻煩,邏輯更加清楚簡單,因此不是 實現麻煩 這一類。那應該指的是 內容眾多 這個意思。黑羽倒覺得 內容眾多 往往是褒義詞,意味著api豐富,控制範圍和深度大...

AS3 0反射機制的使用

取類名 傳進乙個object,返回類的全名 var loader urlloader new urlloader var classname string getqualifiedclassname loader trace classname displays flash.net.urlloade...

as3 0 初學者完整教程

記大溼成長歷程 又名 大濕是怎樣練成的 注意 本教程目前僅為輔助教程型別,注意是配合新手看書給出的原始碼及案例!當然開頭要有廢話 有很多的新人想要學習程式設計,所以選擇了as3.0這門語言,一方面是它是所有物件導向語言當中最簡單的,另一方面它也是最容易學的一門語言!說這是乙個教程,不如說這是乙個案例...