flex事件(二)事件對象重要的屬性和方法
Posted on 2012-10-17 16:54 誰用我名字啦? 閱讀(349) 評論(0) 編輯 收藏 所屬分類: flex學(xué)習(xí)之路事件對象重要的屬性和方法
flash.event.Event類的全部6個(gè)屬性都是只讀屬性,這些屬性提供了發(fā)生事件的基本信息。我們已經(jīng)討論過target和currentTarget屬性(見6.2.1節(jié)的事件屬性:target和currentTarget(見第103頁)),并在"EventJourney的事件偵聽器myEventhandler中使用eventPhase屬性來獲取事件旅程的階段。Event類也提供了許多方法。我們只介紹事件對象常用的屬性和方法,更詳細(xì)信息請參考"Adobe FlexTM 3語言參考"(http://livedocs.adobe.com/flex/3/langref/)。
1.target和currentTarget屬性
如我們剛才提到的,在事件被觸發(fā)后,F(xiàn)lash Player就會創(chuàng)建事件對象,并逐一檢查"事件旅程"上的節(jié)點(diǎn)是否針對發(fā)生的事件注冊了偵聽器,為事件對象賦值,并調(diào)用偵聽器。事件對象源自flash.events.Event類。事件對象currentTarget屬性的值會在事件流中改變,而target屬性則不會變化。(關(guān)于事件對象,我們將在6.3節(jié)(見第106頁)深入討論)由此,開發(fā)者能夠通過
currentTarget屬性獲知事件旅程現(xiàn)在停在了哪個(gè)節(jié)點(diǎn)上。
currentTarget屬性:事件旅程中,currentTarget屬性代表了Flash Player正在檢查的節(jié)點(diǎn)對象。比如,當(dāng)Flash Player遍歷到ctnButtons對象,那么event.currentTarget就是ctnButtons對象。
target屬性:target屬性就是發(fā)生事件的對象。在信號燈應(yīng)用中,event.target就是用戶所點(diǎn)擊的按鈕對象,在事件旅程中,該屬性的值始終不變。信號燈應(yīng)用中,偵聽器myEventHandler利用event.target來獲取被點(diǎn)擊按鈕上的標(biāo)簽數(shù)據(jù)。此時(shí)賦給event.currentTarget屬性的則是HBox容器對象ctnButtons。
2. type屬性(String類型)
當(dāng)用戶進(jìn)行鼠標(biāo)操作時(shí),F(xiàn)lash Player會自動調(diào)度鼠標(biāo)事件MouseEvent。操作可能是鼠標(biāo)點(diǎn)擊、移動、滑動滾輪等。這些不同的操作都是通過事件類型來標(biāo)記的。
type屬性返回的字符串表明事件的類型。代表事件類型的字符串是大小寫敏感的。Flex以常量的形式內(nèi)置了許多事件類型,如Event.unloaded和MouseEvent.CLICK。
3. cancellable屬性(String類型)和preventDefault()方法
默認(rèn)情況下,許多事件都有 Flash Player 執(zhí)行的關(guān)聯(lián)行為。比如,如果用戶在文本字段中鍵入一個(gè)字符,則默認(rèn)行為就是在文本字段中顯示該字符。如果需要取消TextEvent.TEXT_INPUT事件的默認(rèn)行為,你可以使用preventDefault()方法來阻止顯示所鍵入的字符。
不可取消行為的一個(gè)示例是與Event.REMOVED事件關(guān)聯(lián)的默認(rèn)行為,只要Flash Player從顯示列表中刪除顯示對象,就會生成該事件。由于無法取消默認(rèn)行為(刪除元素),因此preventDefault()方法對此默認(rèn)行為無效。
開發(fā)者可以使用Event.cancelable屬性來檢查是否可以阻止與特定事件關(guān)聯(lián)的默認(rèn)行為。如果屬性Event.cancelable的值為true,則可以使用preventDefault()來取消默認(rèn)行為,否則,preventDefault()無效。