日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
解析Flex事件執(zhí)行流程

本文和大家重點(diǎn)討論一下Flex事件機(jī)制,F(xiàn)lex事件執(zhí)行流程大致可以分為三個(gè)階段,下面為你一一介紹。

Flex事件機(jī)制

Flex事件執(zhí)行流程大致可以分為三個(gè)階段。

第一階段為捕獲階段

第二階段為目標(biāo)階段

第三階段為冒泡階段

所以:addEventListener方法注冊(cè)的監(jiān)聽(tīng)器有兩種,第一種是處理捕獲階段的監(jiān)聽(tīng)器(addEventListener的第三個(gè)參數(shù)useCapture 為true)
第二種就是處理目標(biāo)和冒泡階段的監(jiān)聽(tīng)器(第三個(gè)參數(shù)useCapture 為false)。

第一階段:捕獲階段流程

Flex會(huì)去查找事件的觸發(fā)源,它是通過(guò)根顯示元素(root display object)逐層向下尋蹤,并從上往下,依次觸發(fā)這些節(jié)點(diǎn)的當(dāng)前Flex事件的處理函數(shù)(如果他們都用捕獲階段的監(jiān)聽(tīng)器注冊(cè)了這個(gè)事件)直到找到事件發(fā)起源頭的父節(jié)點(diǎn)。并觸發(fā)完父節(jié)點(diǎn)的這個(gè)事件為止。但它不會(huì)調(diào)用事件觸發(fā)源節(jié)點(diǎn)的事件。

例如:
test.mxml文件下:
application節(jié)點(diǎn)--vbox(id=vb)節(jié)點(diǎn)--button(id=bt)節(jié)點(diǎn)。

如果在application的creationComplete中:將以上所有組件的click事件注冊(cè)為捕獲監(jiān)聽(tīng)器。
如:

 
 
 
  1. addEventListener(MouseEvent.CLICK, btnClick2, true);    
  2. vb.addEventListener(MouseEvent.CLICK, btnClick3,true);    
  3. bt.addEventListener(MouseEvent.CLICK, btnClick4,true);   

如果在bt上點(diǎn)擊,執(zhí)行流程如下:
Flash Player會(huì)去查找Flex事件的觸發(fā)源(bt),通過(guò)根顯示元素(root display object)(這里就是application)逐層向下尋蹤,并從上往下,依次調(diào)用它們的click事件(如果他們都注冊(cè)了捕獲階段的click事件)直到找到事件的發(fā)起源頭的父節(jié)點(diǎn),上面例子中會(huì)找到vb,并執(zhí)行完vb的click事件后,就不再查找下邊的bt組件和執(zhí)行它的click事件。

第二階段:

一般情況下,第二階段的目標(biāo)階段,也是執(zhí)行mxml文檔的目標(biāo)節(jié)點(diǎn)配置的那個(gè)事件處理函數(shù),然后再處理對(duì)應(yīng)的監(jiān)聽(tīng)器(處理目標(biāo)和冒泡階段的監(jiān)聽(tīng)器)注冊(cè)的那個(gè)處理函數(shù)。

 如果文檔該節(jié)點(diǎn),沒(méi)有配置Flex事件處理,則只執(zhí)行通過(guò)addEventListener注冊(cè)的事件處理方法,否則,如果配置了,就先執(zhí)行mxml的配置函數(shù)處理,接著處理通過(guò)監(jiān)聽(tīng)器注冊(cè)的函數(shù)。

最后就是冒泡階段:
這個(gè)階段與捕獲階段相反,它會(huì)從從目標(biāo)節(jié)點(diǎn)的父節(jié)點(diǎn)開(kāi)始依次向上查找并執(zhí)行父節(jié)點(diǎn)的mxml配置事件和通過(guò)監(jiān)聽(tīng)器注冊(cè)的事件處理函數(shù)。(這些處理函數(shù)也是用處理目標(biāo)和冒泡階段的監(jiān)聽(tīng)器注冊(cè)的)

也就是說(shuō):捕獲階段的事件觸發(fā)只能是用處理這個(gè)階段的監(jiān)聽(tīng)器去注冊(cè)。目標(biāo)和冒泡階段的事件觸發(fā),也只能是處理這個(gè)階段的監(jiān)聽(tīng)器去注冊(cè)。如果,要讓同一個(gè)事件,在捕獲階段或目標(biāo)和冒泡階段都執(zhí)行的話,需要用addEventListener注冊(cè)兩次,將第三個(gè)參數(shù)useCapture true和false各設(shè)置一次。

【編輯推薦】

  1. Flex事件處理三要素
  2. 從Flex Builder更名看Flash平臺(tái)戰(zhàn)略
  3. Flex及FlexBuilder2.0開(kāi)發(fā)環(huán)境詳解
  4. FlexBuilder3.0與Eclipse3.4的完美結(jié)合
  5. 學(xué)習(xí)筆記 FlexBuilder2.0中如何使用基于Lists的控件 

分享名稱:解析Flex事件執(zhí)行流程
本文網(wǎng)址:http://www.5511xx.com/article/dhihhph.html