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