成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

學習筆記 FlexBuilder教程中如何使用ActionScript處理事件

開發(fā) 后端
本文向大家介紹一下FlexBuilder教程中如何使用ActionScript處理事件,主要包括事件模型與機制,創(chuàng)建監(jiān)聽器兩大部分內容,希望本文介紹能讓你有所收獲。

FlexBuilder有很多值得學習的地方,本文和大家重點討論一下FlexBuilder教程中如何使用ActionScript處理事件,相信通過本文的學習你對FlexBuilder中ActionScript處理事件有明確的認識。

FlexBuilder教程中使用ActionScript處理事件

1,事件模型與機制

FlexBuilder教程中Flex的事件模型基于DOM3事件模型。通過創(chuàng)建注冊事件監(jiān)聽器(事件處理程序,事件處理器,是函數(shù)方法用于響應指定的事件),可以在組件的實例發(fā)出某個事件(如用戶何時與界面組件交互,以及在組件的外觀或生命周期中何時發(fā)生重要的變化,如組件的創(chuàng)建或破壞或調整其大小等)時,對象事件自動派發(fā)此事件到所有注冊過的監(jiān)聽器。

1)、事件流:

當一個事件被派發(fā)出來時,事件對象從根節(jié)點開始自上而下開始掃描displaylist(如),一直到目標對象,檢查每個節(jié)點是否有相應的監(jiān)聽器。目標對象指的是displaylist中產生事件的對象.比如:<mx:Panel><mx:HBox><mx:VBox><mx:Button/></mx:VBox></mx:HBox></mx:Panel>。如果此時resize了VBox,則會從根(Application)開始,下來檢查Panel,HBox,直到目標對象-產生resize事件的VBox為止.

2)、事件的派發(fā):

Flex中可以通過dispatchEvent()方法手工派發(fā)事件,所有UIComponent的子類都可以調用此方法.語法://參數(shù)event_type是Event對象的type屬性
//函數(shù)的返回值總是True.
objectInstance.dispatchEvent(newEvent("event_type"):Boolean

可以使用此方法派發(fā)任意事件,而不僅僅是用戶自定義事件,比如:可以派發(fā)一個Button的Click事件.varresult:Boolean=buttonInstance.dispatchEvent(newEvent(MouseEvent.CLICK));

在Flex應用中不是必須對新派發(fā)的事件進行處理,如果觸發(fā)了一個事件,而沒有對應的Listener時,Flex忽略此事件.

如果想給Event對象添加新屬性,就必須繼承Event類,然后定義新屬性

3)、事件的傳播

FlexBuilder教程中事件觸發(fā)后,Flex有3個檢測事件監(jiān)聽器的階段,3個階段的發(fā)生的順序如下:

A.捕獲階段:在捕獲階段,Flex在顯示列表中檢查事件的祖先是否注冊了事件的監(jiān)聽器.Flex從根節(jié)點開始順序而下.大多數(shù)情況中,根節(jié)點是Application對象.同時,Flex改變事件的currentTarget值.缺省情況下,在此階段,沒有容器監(jiān)聽事件.use_capture參數(shù)的值是False,在此階段添加監(jiān)聽的唯一方法是在調用add_listener時,傳入一個為True值的use_capture參數(shù),比如:myAccordion.addEventListener(MouseEvent.MOUSE_DOWN,customLogEvent,true);

如果是在Mxml中添加監(jiān)聽,Flex設置此參數(shù)為False,沒有辦法進行修改.如果設置了use_capture為True,那么事件將不會上浮.如果既想捕獲又想上浮就必須調用addEventListener兩次.一次use_capture參數(shù)為true,一次為false;捕獲很少使用,上浮的使用更為普遍.

B.目標階段:在目標階段,Flex激發(fā)事件的監(jiān)聽程序,不檢查其他的節(jié)點.

C.上浮階段:事件只在bubbles屬性為True時才進行上浮.可以上浮的事件包括:change,click,doubleClick,keyDown,keyUp,mouseDown,mouseUp.在上浮階段,Flex改變事件的currentTarget屬性,而target屬性是初始派發(fā)事件的對象.

在任意一個階段,節(jié)點們都有機會操作事件.比如:用戶點擊了一個在VBox中的Button,在捕獲階段,Flex檢查Application對象(根節(jié)點)和VBox是否有監(jiān)聽器處理此事件.Flex然后在目標階段觸發(fā)按鈕的監(jiān)聽器.在上浮階段,VBox和應用以與捕獲階段相反的順序再次獲得機會處理事件.

在Actionscript3.0中,你可以在任意目標節(jié)點上注冊事件監(jiān)聽器.但是部分事件會被直接傳給目標節(jié)點,比如Socket類.捕獲階段的節(jié)點順序是從父節(jié)點到子節(jié)點的,而上浮階段剛好相反.

捕獲事件缺省是關閉的,也就是說如果要捕獲事件,必須顯式指定在捕獲階段進行處理.

每一個Event都有target和currentTarget屬性,幫助跟蹤事件傳播的過程.

4)、查詢事件階段

FlexBuilder教程使用事件的eventPhase可以獲得事件當前的階段,

1):CAPTURE_PHASE

2):AT_TARGET

3):BUBBLING_PHASE

示例:privatefunctiondetermineState(event:MouseEvent):Void{Debug.trace(event.eventPhase+":"+event.currentTarget.id);}

5)、停止傳播

使用下面兩個函數(shù)停止事件的傳播:

stopPropagation()

stopImmediatePropagation()

2,FlexBuilder教程中如何創(chuàng)建監(jiān)聽器

組件有Flex提供的內建事件.也可以使用派發(fā)-監(jiān)聽模型定義自己的事件監(jiān)聽器,并指定監(jiān)聽器監(jiān)聽何種事件.

有三種方式:

1),內部MXML中的AS函數(shù)法:在MXML的<mx:Script></mx:Script>聲明中注冊監(jiān)聽器:這是第一個和使用最廣泛的方法,在MXML中定義事件發(fā)生時會調用的事件處理程序。

2),外部AS文件中的AS函數(shù)法:通過ActionScript定義注冊事件處理程序:可以通過使用ActionScript中的addEventHandler()等方法來注冊事件處理程序。可將addEventHandler()方法置于Application容器的creationComplete事件(在Application表單及其子級被初始化之后,在啟動應用程序時發(fā)生)的事件處理程序中。詳見ActionScript教程。

3),代碼混寫法:在MXML的控件標簽中直接完全嵌入監(jiān)聽器(這也稱為使用線上事件處理程序):這樣比較直接,代碼也較少,但會導致代碼很難閱讀、維護和縮放。如果監(jiān)聽器是多個AS語句甚至更復雜的邏輯,不推薦此方法。
 

【編輯推薦】

  1. FlexBuilder教程教你如何使用特效豐富用戶體驗
  2. 從Flex Builder更名看Flash平臺戰(zhàn)略
  3. Flex及FlexBuilder2.0開發(fā)環(huán)境詳解
  4. FlexBuilder3.0與Eclipse3.4的完美結合
  5. 學習筆記 FlexBuilder2.0中如何使用基于Lists的控件 

 

 

責任編輯:佚名 來源: javaeye.com
相關推薦

2010-08-02 13:47:47

FlexBuilder

2010-08-02 15:39:10

FlexBuilder

2010-08-03 15:44:08

FlexBuilder

2010-08-03 16:13:01

FlexBuilder

2010-08-03 15:30:00

FlexBuilder

2010-08-03 16:03:00

FlexBuilder

2010-08-05 15:40:21

FlexBuilder

2010-08-06 13:22:48

FlexCSS

2010-08-03 15:36:38

FlexBuilder

2009-12-30 10:32:31

Silverlight

2011-08-16 10:23:04

Objective-CNSAutoreleaXcode常用鍵

2021-02-28 22:12:11

WPF標記Handled

2010-08-02 15:26:27

FlexBuilder

2010-07-28 09:49:27

FlexBuilder

2010-05-18 13:53:34

Subversion插

2010-08-06 13:30:31

FlexBuilder

2010-08-03 13:27:04

FlexBuilder

2010-08-03 15:19:08

FlexBuilder

2010-05-18 13:26:16

Subversion插

2011-08-23 17:06:03

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产成人免费视频网站高清观看视频 | 欧美一级片在线播放 | 国产精品一区二区在线免费观看 | 最新中文字幕第一页视频 | 国产精品高潮呻吟久久 | 婷婷久久五月天 | www.啪啪.com| 91pao对白在线播放 | 亚洲欧美日韩在线 | 粉嫩国产精品一区二区在线观看 | 水蜜桃久久夜色精品一区 | 欧美日韩国产不卡 | 亚洲成人网在线播放 | 久久91精品国产一区二区 | 国产精品中文字幕在线 | 国产精品福利一区二区三区 | 鲁一鲁资源影视 | www.亚洲精品 | 亚洲精品在线免费观看视频 | 精品福利一区二区三区 | 一本色道精品久久一区二区三区 | 91精品久久久久久久久 | 亚洲精品在线国产 | 丁香五月缴情综合网 | 亚洲免费视频播放 | 久久久精品一区二区三区 | 成人在线免费看 | a级毛片毛片免费观看久潮喷 | 免费视频久久 | 羞羞的视频免费看 | 亚洲欧美视频一区 | 手机日韩 | 婷婷免费在线 | 亚洲午夜视频 | 欧美精品福利视频 | 亚洲精品99| 精品综合 | 日本h片在线观看 | 国产精品成人一区二区 | 国产在线一区二区三区 | 日韩欧美专区 |