国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
flex事件機(jī)制

Flex事件機(jī)制是觀察者模式,即首先要注冊事件,事件分發(fā)后通過事件響應(yīng)函數(shù)進(jìn)行處理。

例如在AS3中:

button.addEventListener(“click”,onClick);//button注冊一個(gè)click事件

internal function onClick(evt:MouseEvent):void{txt.text=“click a button!”;}//事件響應(yīng)函數(shù)

那么注冊事件注冊什么呢?通過addEventListener注冊函數(shù)的參數(shù)可以看出,首先需要注冊事件類型(第一個(gè)參數(shù)),然后注冊響應(yīng)函數(shù),即事件發(fā)生后需要做什么事情,也就是說調(diào)用哪一個(gè)方法。

那么響應(yīng)函數(shù)需要什么要求呢?響應(yīng)函數(shù)必須要一個(gè)參數(shù),指明注冊的事件的事件類型,如上面的例子,我們注冊的是一個(gè)鼠標(biāo)事件類型,即鼠標(biāo)單擊事件。

注冊的事件類型必須和響應(yīng)函數(shù)的事件類型一致!

到底有哪些事件類型呢?除了有系統(tǒng)默認(rèn)的事件類型外,我們可以定義自己的事件和事件類型。

簡單的說,事件類型就是定義在事件類的常量屬性。

事件流

1.捕獲階段(從根節(jié)點(diǎn)到子節(jié)點(diǎn),檢測對象是否注冊了監(jiān)聽器,是則調(diào)用監(jiān)聽函數(shù))

2.目標(biāo)階段(調(diào)用目標(biāo)對象本身注冊的監(jiān)聽程序)

3.冒泡階段(從目標(biāo)節(jié)點(diǎn)到根節(jié)點(diǎn),檢測對象是否注冊了監(jiān)聽器,是則調(diào)用監(jiān)聽函數(shù))

注:事件發(fā)生后,每個(gè)節(jié)點(diǎn)可以有2個(gè)機(jī)會(huì)(21)響應(yīng)事件,默認(rèn)關(guān)閉捕獲階段。

從上到下(從根到目標(biāo))是捕獲階段1,到達(dá)了目標(biāo)后是目標(biāo)階段2,然后從目標(biāo)向上返回是冒泡階段3。

如果在構(gòu)造事件時(shí),Event(type:String, bubbles:Boolean = false,cancelable:Boolean = false) 

bubblesfalse,則不執(zhí)行冒泡階段。

怎樣理解事件流?

當(dāng)事件發(fā)生時(shí),FLEX通過事件的分發(fā)器EventDispatcher進(jìn)行事件分發(fā),分發(fā)的順序是:從上往下到達(dá)目標(biāo),然后從下往上,從目標(biāo)開始返回。如上面1、2、3所說的那樣,這里就會(huì)有一個(gè)問題,在事件的流經(jīng)過程中,不是目標(biāo)的對象如果注冊了事件,也有了相應(yīng)的事件響應(yīng)函數(shù),那么不是目標(biāo)的對象響應(yīng)了事件的處理,這怎么辦呢?

由于上面說的那樣,addEventListener在只有如上兩個(gè)參數(shù)的牧人情況下是關(guān)閉捕獲階段的,也就是說事件流是從目標(biāo)階段開始的,然后是冒泡階段,當(dāng)出現(xiàn)容器包含控件的時(shí)候,可以使用判斷

if(evt.target == evt.currentTarget)

來確定當(dāng)前事件流上的當(dāng)前流經(jīng)對象是否就是目標(biāo)對象,如果是就進(jìn)行相應(yīng)的處理。

移除對象的事件流:removeEventListener(),參數(shù)與注冊事件相同。

阻斷事件流中目標(biāo)對象的后繼事件,即通過了目標(biāo)階段后阻止冒泡階段:

event類的方法:public function stopImmediatePropagation():void 

Event

Event 類作為創(chuàng)建 Event 對象的基類,當(dāng)發(fā)生事件時(shí),Event 對象將作為參數(shù)傳遞給事件偵聽器。 如MouseEvent 、KeyboardEvent ,更多的可以查參考手冊。

Event類有幾個(gè)常用的公共屬性:

是否冒泡:bubbles;

目標(biāo)對象:target;

所處階段:eventPhase;

當(dāng)前對象:currentTarget;

 從參考手冊可以event類的構(gòu)造函數(shù):

Event () 構(gòu)造函數(shù) public function Event(type:String, bubbles:Boolean = false,cancelable:Boolean = false) 

創(chuàng)建一個(gè)作為參數(shù)傳遞給事件偵聽器的 Event 對象。 

參數(shù)  type:String — 事件的類型,可以作為 Event.type 訪問。  

        bubbles:Boolean (default = false) — 確定 Event 對象是否參與事件流的冒泡階段。 默認(rèn)值為 false。  

        cancelable:Boolean (default = false) — 確定是否可以取消 Event 對象。 默認(rèn)值為 false。 

flash.events包中可以看見系統(tǒng)自帶的事件。

如何自定義事件

自定義事件,也就是向監(jiān)聽器傳遞自己定義的事件類型,同時(shí)可以通過事件傳遞參數(shù)。

1.創(chuàng)建自定義事件名稱的Event

 dispatchEvent(new Event(“myEvnet”,true,false));

2.創(chuàng)建自定義事件類

 Public class MyEvent extends Event{

 ….

 }

dispatchEventEventDispatcher的方法:public function dispatchEvent(event:Event):Boolean將事件調(diào)度到事件流中。 事件目標(biāo)是對其調(diào)用 dispatchEvent() 方法的 EventDispatcher 對象。

這句話就是說是哪個(gè)對象調(diào)用 dispatchEvent() ,那么該事件就會(huì)被分發(fā)到那個(gè)對象的事件流中,如果沒有指明對象,那么默認(rèn)為this對象,即應(yīng)用程序。這時(shí)該事件被分發(fā)到應(yīng)用程序?qū)ο蟮氖录髦?,而沒有分發(fā)到特定對象的事件流中。一旦兩個(gè)對象的不是父子關(guān)系(控件樹),那么事件流不會(huì)在這兩個(gè)對象之間有聯(lián)系,那么事件不會(huì)被響應(yīng);如果是,則還是要響應(yīng)。(這種情況dispatchEvent的參數(shù)Event對象的參數(shù)必須是三個(gè),如上)。dispatchEvent就是說明有了新的事件,只要注冊了該事件,就可以響應(yīng)。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
淺談Javascript事件模擬
Flex中的事件機(jī)制
JS 中的自定義事件和模擬事件
Flash AS3.0的事件機(jī)制
FLEX學(xué)習(xí)筆記
AS3)Flash(非Flex)開發(fā)中通過事件傳遞參數(shù)的一種方法
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服