自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

全面認(rèn)識(shí)Flex事件機(jī)制

開(kāi)發(fā) 后端
你對(duì)Flex事件機(jī)制的概念是否了解,這里向大家簡(jiǎn)單介紹一下,F(xiàn)lex事件機(jī)制是觀察者模式,即首先要注冊(cè)事件,事件分發(fā)后通過(guò)事件響應(yīng)函數(shù)進(jìn)行處理。

Flex有很多值得學(xué)習(xí)的地方,本文就向大家簡(jiǎn)單介紹一下Flex事件機(jī)制,主要包括事件流,自定義事件等內(nèi)容,相信通過(guò)本文的簡(jiǎn)單介紹你對(duì)Flex事件機(jī)制一定會(huì)有深刻的認(rèn)識(shí)。

Flex事件機(jī)制

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

例如在AS3中:
 

  1. button.addEventListener(“click”,onClick);//向button注冊(cè)一個(gè)click事件  
  2. internalfunctiononClick(evt:MouseEvent):void{txt.text=“clickabutton!”;}
  3. //事件響應(yīng)函數(shù) 

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

◆那么響應(yīng)函數(shù)需要什么要求呢?

響應(yīng)函數(shù)必須要一個(gè)參數(shù),指明注冊(cè)的事件的事件類(lèi)型,如上面的例子,我們注冊(cè)的是一個(gè)鼠標(biāo)事件類(lèi)型,即鼠標(biāo)單擊事件。
注冊(cè)的事件類(lèi)型必須和響應(yīng)函數(shù)的事件類(lèi)型一致!

◆到底有哪些事件類(lèi)型呢?

除了有系統(tǒng)默認(rèn)的事件類(lèi)型外,我們可以定義自己的事件和事件類(lèi)型。
簡(jiǎn)單的說(shuō),事件類(lèi)型就是定義在事件類(lèi)的常量屬性。

Flex事件機(jī)制中的事件流

1.捕獲階段(從根節(jié)點(diǎn)到子節(jié)點(diǎn),檢測(cè)對(duì)象是否注冊(cè)了監(jiān)聽(tīng)器,是則調(diào)用監(jiān)聽(tīng)函數(shù))
2.目標(biāo)階段(調(diào)用目標(biāo)對(duì)象本身注冊(cè)的監(jiān)聽(tīng)程序)
3.冒泡階段(從目標(biāo)節(jié)點(diǎn)到根節(jié)點(diǎn),檢測(cè)對(duì)象是否注冊(cè)了監(jiān)聽(tīng)器,是則調(diào)用監(jiān)聽(tīng)函數(shù))
注:事件發(fā)生后,每個(gè)節(jié)點(diǎn)可以有2個(gè)機(jī)會(huì)(2選1)響應(yīng)事件,默認(rèn)關(guān)閉捕獲階段。
從上到下(從根到目標(biāo))是捕獲階段,到達(dá)了目標(biāo)后是目標(biāo)階段,然后從目標(biāo)向上返回是冒泡階段。

怎樣理解事件流?

當(dāng)事件發(fā)生時(shí),F(xiàn)LEX通過(guò)事件的分發(fā)器EventDispatcher進(jìn)行事件分發(fā),分發(fā)的順序是:從上往下到達(dá)目標(biāo),然后從下往上,從目標(biāo)開(kāi)始返回。如上面1、2、3所說(shuō)的那樣,這里就會(huì)有一個(gè)問(wèn)題,在事件的流經(jīng)過(guò)程中,不是目標(biāo)的對(duì)象如果注冊(cè)了事件,也有了相應(yīng)的事件響應(yīng)函數(shù),那么不是目標(biāo)的對(duì)象響應(yīng)了事件的處理,這怎么辦呢?
由于上面說(shuō)的那樣,addEventListener在只有如上兩個(gè)參數(shù)的牧人情況下是關(guān)閉捕獲階段的,也就是說(shuō)事件流是從目標(biāo)階段開(kāi)始的,然后是冒泡階段,當(dāng)出現(xiàn)容器包含控件的時(shí)候,可以使用判斷
if(evt.target==evt.currentTarget)
來(lái)確定當(dāng)前事件流上的當(dāng)前流經(jīng)對(duì)象是否就是目標(biāo)對(duì)象,如果是就進(jìn)行相應(yīng)的處理。

移除對(duì)象的事件流:removeEventListener(),參數(shù)與注冊(cè)事件相同。
阻斷事件流中目標(biāo)對(duì)象的后繼事件,即通過(guò)了目標(biāo)階段后阻止冒泡階段:
event類(lèi)的方法:publicfunctionstopImmediatePropagation():void

Flex事件機(jī)制中的Event類(lèi)

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

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

是否冒泡:bubbles;
目標(biāo)對(duì)象:target;
所處階段:eventPhase;
當(dāng)前對(duì)象:currentTarget;
從參考手冊(cè)可以event類(lèi)的構(gòu)造函數(shù):

Event()構(gòu)造函數(shù)publicfunctionEvent(type:String,bubbles:Boolean=false,cancelable:Boolean=false)
創(chuàng)建一個(gè)作為參數(shù)傳遞給事件偵聽(tīng)器的Event對(duì)象。
參數(shù)type:String—事件的類(lèi)型,可以作為Event.type訪問(wèn)。
bubbles:Boolean(default=false)—確定Event對(duì)象是否參與事件流的冒泡階段。默認(rèn)值為false。
cancelable:Boolean(default=false)—確定是否可以取消Event對(duì)象。默認(rèn)值為false。
在flash.events包中可以看見(jiàn)系統(tǒng)自帶的事件。

Flex事件機(jī)制中如何自定義事件

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

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

  1. dispatchEvent(newEvent(“myEvnet”,true,false)); 

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

  1. PublicclassMyEventextendsEvent{  
  2. ….  

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

【編輯推薦】

  1. Flex事件機(jī)制中監(jiān)聽(tīng)器注冊(cè)方式
  2. Flex事件機(jī)制中事件注冊(cè)通道和觸發(fā)方法
  3. 學(xué)習(xí)總結(jié) 在Flex中如何嵌入Flex字體
  4. 揭開(kāi)Flex正則表達(dá)式的神秘面紗
  5. Flex數(shù)據(jù)綁定及其使用頻繁的幾種情況 

 

責(zé)任編輯:佚名 來(lái)源: csdn.net
相關(guān)推薦

2010-08-11 13:46:01

Flex安全沙箱

2010-07-28 12:58:24

Flex DateCh

2010-07-29 09:00:29

Flex彈出窗口

2010-08-04 14:15:43

Flex應(yīng)用程序

2010-08-04 13:52:53

Flex事件機(jī)制

2010-08-06 09:45:50

Flex事件機(jī)制

2010-08-06 10:03:42

Flex事件

2010-07-28 15:21:01

Flex函數(shù)

2010-07-29 10:33:59

Flex鍵盤(pán)事件

2010-08-04 14:07:59

Flex事件機(jī)制

2010-09-25 15:26:12

JVM垃圾回收

2010-08-13 13:56:02

Flex事件機(jī)制

2010-08-06 09:56:06

Flex事件機(jī)制

2010-08-04 14:02:08

Flex事件機(jī)制

2010-08-09 11:06:01

Flex事件機(jī)制

2010-08-12 16:28:51

Flex應(yīng)用程序

2010-08-13 14:05:24

Flex事件機(jī)制

2010-08-06 10:24:56

Flex事件分發(fā)

2010-08-09 09:47:34

Flex事件機(jī)制

2010-07-06 16:13:13

HART協(xié)議
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)