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

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

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

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

FlexBuilder教程中使用ActionScript處理事件

1,事件模型與機制

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

1)、事件流:

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

2)、事件的派發:

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

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

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

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

3)、事件的傳播

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

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

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

B.目標階段:在目標階段,Flex激發事件的監聽程序,不檢查其他的節點.

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

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

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

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

每一個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)、停止傳播

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

stopPropagation()

stopImmediatePropagation()

2,FlexBuilder教程中如何創建監聽器

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

有三種方式:

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

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

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

【編輯推薦】

  1. FlexBuilder教程教你如何使用特效豐富用戶體驗
  2. 從Flex Builder更名看Flash平臺戰略
  3. Flex及FlexBuilder2.0開發環境詳解
  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-06 13:22:48

FlexCSS

2010-08-05 15:40:21

FlexBuilder

2010-08-03 16:03:00

FlexBuilder

2010-08-03 15:36:38

FlexBuilder

2009-12-30 10:32:31

Silverlight

2021-02-28 22:12:11

WPF標記Handled

2011-08-16 10:23:04

Objective-CNSAutoreleaXcode常用鍵

2010-05-18 13:53:34

Subversion插

2010-08-02 15:26:27

FlexBuilder

2010-08-06 13:30:31

FlexBuilder

2010-07-28 09:49:27

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技術棧公眾號

主站蜘蛛池模板: 青青草网站在线观看 | 日韩精品一区二区三区中文在线 | 欧美日韩a | 青青草一区二区 | 成人亚洲视频 | 在线欧美视频 | 91av视频在线播放 | 成人在线一区二区 | 久草综合在线视频 | 国产精品一区二区三区四区 | 国产精品国产精品国产专区不蜜 | 亚洲综合区 | 欧美日在线 | 欧美一区二区精品 | 国产 欧美 日韩 一区 | 亚洲区一区二 | 欧美午夜影院 | 久久精品国产久精国产 | 欧美成人第一页 | 久久中文视频 | 国产精品日韩在线 | 国产在视频一区二区三区吞精 | 亚洲天堂一区二区 | 亚洲一区二区免费 | 欧美成人视屏 | 欧美精品欧美精品系列 | 久草综合在线 | 久久99精品久久久久久 | 亚洲第一成人影院 | 精品综合久久 | 久久另类视频 | 先锋资源网站 | 99亚洲精品 | 91精品国产一区二区三区 | 国产精品久久7777777 | 久久久久亚洲精品 | 精品视频导航 | 国产精品亚洲成在人线 | 免费在线观看91 | 国产精品成人久久久久 | 久久黄色网 |