日韩无码专区无码一级三级片|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事件機(jī)制中事件處理和監(jiān)聽(tīng)器注冊(cè)方法指導(dǎo)

在學(xué)習(xí)Flex的過(guò)程中,你可能會(huì)遇到Flex事件機(jī)制方面的問(wèn)題,這里和大家分享一下Flex事件處理和Flex事件監(jiān)聽(tīng)器注冊(cè)的概念,希望本文的介紹能讓你有所收獲。

成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),裕民企業(yè)網(wǎng)站建設(shè),裕民品牌網(wǎng)站建設(shè),網(wǎng)站定制,裕民網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,裕民網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

Flex事件機(jī)制

事件處理是GUI開(kāi)發(fā)的重要組成部分,早在傳統(tǒng)的Client/Server開(kāi)發(fā)中,事件驅(qū)動(dòng)的開(kāi)發(fā)法就已經(jīng)是GUI開(kāi)發(fā)的主流。

1.Flex事件處理

軟件開(kāi)發(fā)者在開(kāi)發(fā)過(guò)程中只關(guān)注某個(gè)組件響應(yīng)某個(gè)事件后所做的操作,即被驅(qū)動(dòng)的操作,而不用像結(jié)構(gòu)化線形開(kāi)發(fā)那樣去關(guān)注驅(qū)動(dòng)事件的動(dòng)作。響應(yīng)特定事件的組件叫做事件監(jiān)聽(tīng)器(EventListener)。

一個(gè)用于交互的GUI組件會(huì)被預(yù)先定義它可能遇到的事件,軟件開(kāi)發(fā)者即可根據(jù)開(kāi)發(fā)需求來(lái)編寫事件監(jiān)聽(tīng)器,響應(yīng)部分或全部的事件觸發(fā),圖1.7展示了這個(gè)觸發(fā)過(guò)程。作為開(kāi)發(fā)者,我們首先需要了解特定的GUI交互組件支持哪些事件,之后便可以根據(jù)需求寫出相應(yīng)的事件監(jiān)聽(tīng)器。

圖1.7GUI系統(tǒng)中Flex事件機(jī)制的Flex事件處理流程

在示例1.2和示例1.3中,我們已經(jīng)使用到了Flex的事件機(jī)制,F(xiàn)lex開(kāi)發(fā)基于ActionScipt對(duì)象,事件已經(jīng)作為Flex可視化組件的屬性。我們可以在MXML中直接為組件的事件屬性設(shè)定事件監(jiān)聽(tīng)方法或者代碼。

在示例1.2中,我們?cè)O(shè)定的單擊事件(click)屬性為click=“changeText()”,并寫了一個(gè)changeText方法作為單擊事件的監(jiān)聽(tīng)器。這樣,當(dāng)單擊Button的時(shí)候,就會(huì)觸發(fā)Button的click事件,changeText方法將被調(diào)用。而在示例1.3中,我們把ActionScript腳本直接復(fù)制給了click,這樣整個(gè)腳本將作為一個(gè)事件監(jiān)聽(tīng)器。Flex可視化組件開(kāi)發(fā)的事件處理方式與HTML頁(yè)面開(kāi)發(fā)中的JavaScript腳本使用是非常相似的。

如果我們需要在事件監(jiān)聽(tīng)器中處理事件源,即產(chǎn)生事件的組件,那么需要為事件監(jiān)聽(tīng)的方法傳遞參數(shù)event,例如可以對(duì)示例1.2中事件監(jiān)聽(tīng)方法的定義和的事件屬性做一些修改。

(1)事件監(jiān)聽(tīng)方法定義的修改:

 
 
 
 
  1. publicfunctionchangeText(event:Event):void

(2)Button事件屬性的修改:

 
 
 
 

在Button事件屬性的修改中,event作為一個(gè)關(guān)鍵字來(lái)使用,而非自定義變量,因此我們可以在標(biāo)簽中直接使用event來(lái)創(chuàng)建當(dāng)前組件所觸發(fā)的事件對(duì)象。

ActionScript類Event構(gòu)建的時(shí)候會(huì)把事件源組件作為一個(gè)成員屬性,這樣在事件監(jiān)聽(tīng)器中,我們可以通過(guò)event來(lái)操作事件源組件。

在MXML中設(shè)定事件屬性值的方式叫做事件監(jiān)聽(tīng)器內(nèi)建。這種方式適合應(yīng)用在簡(jiǎn)單的事件處理上。如果遇到需要多個(gè)事件監(jiān)聽(tīng)器聯(lián)合使用等復(fù)雜的事件處理情況,則需要應(yīng)用Flex的事件注冊(cè)。

2.Flex事件機(jī)制中事件監(jiān)聽(tīng)器注冊(cè)

Flex的可視化組件對(duì)象都繼承了EventDispatcher類,因此它們都支持事件注冊(cè)方法addEventListener。該方法的定義如下:

 
 
 
 
  1. addEventListener(type:String,listener:Function,
  2. useCapture:Boolean=false,priority:int=0,
  3. useWeakReference:Boolean=false):void

通過(guò)addEventListener方法,我們可以為可視化組件注冊(cè)一個(gè)事件監(jiān)聽(tīng)器。type參數(shù)表明事件監(jiān)聽(tīng)器的類型,如鼠標(biāo)單擊事件(MouseEvent.CLICK);listener參數(shù)是事件監(jiān)聽(tīng)器的具體方法;useCapture參數(shù)設(shè)定是否在事件的捕獲階段就進(jìn)行響應(yīng);priority參數(shù)設(shè)定事件監(jiān)聽(tīng)器的優(yōu)先級(jí);useWeakReference參數(shù)設(shè)定事件監(jiān)聽(tīng)器方法是否為弱類型,一個(gè)強(qiáng)類型的事件監(jiān)聽(tīng)器方法是不會(huì)被Flex進(jìn)行自動(dòng)垃圾收集的。

先前我們提到的事件監(jiān)聽(tīng)器內(nèi)建方式,實(shí)際上已經(jīng)創(chuàng)建了一個(gè)默認(rèn)的事件監(jiān)聽(tīng)器方法,并把ActionScript腳本的內(nèi)容寫入方法,但這種方法的最大不足就是無(wú)法操作一個(gè)以上的事件監(jiān)聽(tīng)器。

而使用addEventListener方法注冊(cè)事件監(jiān)聽(tīng)器的方式,我們可以控制事件響應(yīng)的捕獲方式和優(yōu)先級(jí);當(dāng)我們已經(jīng)添加的事件監(jiān)聽(tīng)器在程序的運(yùn)行過(guò)程中需要取消掉的時(shí)候,我們可以通過(guò)removeEventListener方法來(lái)實(shí)現(xiàn)。而這些功能在事件監(jiān)聽(tīng)器內(nèi)建方式中不會(huì)被支持,理由也很明了:內(nèi)建的事件監(jiān)聽(tīng)器都是匿名的,我們無(wú)法引用到匿名監(jiān)聽(tīng)器的監(jiān)聽(tīng)實(shí)體方法。

因此,在使用Flex事件機(jī)制的時(shí)候,還是應(yīng)該盡量選用事件監(jiān)聽(tīng)器注冊(cè)的方式來(lái)構(gòu)建事件處理,這將為事件交互處理帶來(lái)更多的可擴(kuò)展性。


網(wǎng)站欄目:Flex事件機(jī)制中事件處理和監(jiān)聽(tīng)器注冊(cè)方法指導(dǎo)
地址分享:http://www.5511xx.com/article/cceojgi.html