事件機制寫的太多了,我自己都有點煩了。
但沒辦法,
[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這門語言,一方面是它是所有物件導向語言當中最簡單的,另一方面它也是最容易學的一門語言!說這是乙個教程,不如說這是乙個案例...