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

解析Flex事件機制中Flex事件分發和監聽

開發 后端
本文向大家介紹一下Flex事件機制中Flex事件的用法,Flex事件可以看作是一種觸發機制,當滿足了一定的條件后,會觸發這個事件。

在學習Flex的過程中,你可能會遇到Flex事件的概念,這里和大家分享一下,Flex事件可以看作是一種觸發機制,比如MouseEvent就是指的當鼠標進行操作之后觸發的一系列的事件。

什么是Flex事件機制

Flex事件可以看作是一種觸發機制,當滿足了一定的條件后,會觸發這個事件。比如MouseEvent就是指的當鼠標進行操作之后觸發的一系列的事件。很多控件中都有click事件,這個事件就是一個MouseEvent的實例,當點擊鼠標后,系統會自動拋出一個名稱為click的MouseEvent事件(這種方法我們將在后面介紹到)。如果此時在click上注冊一個方法,那么觸發該事件時就會執行這個方法。

1.Flex事件分發

最終繼承自EventDispatcher的對象都會含有dispatchEvent這個方法,他有一個參數,事件對象。
之前說到的事件注冊通道,他只是一個通道,實際上事件是由這個方法來分發出去的,通道只是一個管道而已。

他的作用就是分發一個事件對象,他的分發是沒有目的的,一種廣播形式的,Flex的事件監聽線程會接收到各種各樣的事件(我們稱之為捕獲事件,這在后面會介紹到),那么哪種才是你要的事件,標識就通過事件的type屬性來區分。

1)Flex事件對象

在分發事件時,將會分發一個事件對象出去。不管是那個事件類,都是繼承自flash.events.Event對象的,他包含一些比較重要的屬性,type和bubbles。
type是事件的類型,事件監聽通過這個參數來識別是否是自己所監聽的事件。
bubbles是個布爾值,決定了該對象是否會向上傳遞。默認是false。什么意思呢?畫個圖就明白了。
比如說,當button組件分發click事件對象時,設置的bubbles為false,那么他的分發是這樣的

示意代碼
 

  1. dispatchEvent(newMouseEvent(“click”,false)); 

事件對象無法跨越組件本身,當然,除了之前講到的注冊通道(這樣就很形象了吧)
因此,如果沒有注冊通道,在Flex主應用中,就無法捕獲到這個button組件分發出的事件。

如果我們將Bubbles設為true,他看起來就是這樣
 

  1. dispatchEvent(newMouseEvent(“click”,true)); 

可以看到,這個事件可以跨過組件本身,到達Flex主應用里。不止這樣,在幫助手冊中明確說到,如果在傳遞過程中間一直沒有被捕獲的話,這個事件會逐層上傳,直到最終的stage,那時如果還沒被捕獲,這個事件就會被銷毀掉。

這樣一來,即使我們沒有click的事件通道,只要我們在Flex主應用中添加Flex事件監聽器(addEventListener)那么我們就可以獲得到這個分發出的click事件了。
那么,注冊通道不是沒用了嗎?不是,之前說到過,注冊通道是現式的,可見的,因此如果你的組件要給其他人使用,那么就非常一目了然,而不必知道你源碼中究竟分發了什么事件。但是,不要監聽和注冊同一個事件,這樣會重復執行的。(后面將講到)

2.Flex事件監聽

在分發中,我們講到,如果不是通過注冊通道來調用觸發事件,那么我們是需要一個監聽來捕捉的。如何捕捉到分發出的事件,就是通過Flex事件的type值。

比如:
 

  1. <mx:Applicationxmlns:mxmx:Applicationxmlns:mx=http://www.adobe.com/2006/mxmllayout="absolute"xmlns:comp  
  2. creationComplete='init()' 
  3. > 
  4. <mx:Script> 
  5. <![CDATA[  
  6. privatefunctioninit(){  
  7. testBtn.addEventListener(“click”,clickHandler);  

Flex的事件中都提供了一些靜態常量,讓我們調用,避免我們打錯了。因此這句話可以這么寫

  1. testBtn.addEventListener(MouseEvent.CLICK,clickHandler); 

我們看到,監聽的回調方法中沒有傳遞參數,是的,這和通道的寫法有些不同,這里的回調方法(即clickHandler)只是個引用,并不是代表方法的執行,他的含義是,告訴eventLinstener,如果捕捉到click事件,那么就去找clickHandler,并執行它,event對象參數在執行時動態的傳遞。(如果熟悉ajax的朋友這里應該很容易懂了)

他作用起來就是這樣,如果你又注冊了click的事件通道,那么這兩個都會生效,顯然這是多余的。

3.關于異步和執行順序

以前的說法有誤,as里是不存在線程概念的,在遠程請求時,結果事件、錯誤事件都是異步的。如果你需要處理結果,需要利用監聽,并在回調中獲取你的遠程數據。
而在處理本地事件時,他們仍然是同步的。

回調方法執行的順序甚至還不如dispatchEvent之后的方法。如果接下來的方法依賴于Flex事件回調,那么把接下來的方法寫到回調方法中去。

【編輯推薦】

  1. Flex事件機制中事件注冊通道和觸發方法
  2. Flex事件機制用法指南
  3. Flex框架中Cairngorm和Mate的優點大比拼
  4. FlexBuilder3.0與Eclipse3.4的***結合
  5. 解析Flex應用開發步驟 新特性和技術框架 
責任編輯:佚名 來源: accptech.com
相關推薦

2010-08-06 10:24:56

Flex事件分發

2010-07-29 10:33:59

Flex鍵盤事件

2010-08-09 09:47:34

Flex事件機制

2010-08-09 11:06:01

Flex事件機制

2010-08-06 09:56:06

Flex事件機制

2010-08-13 14:05:24

Flex事件機制

2010-08-06 09:45:50

Flex事件機制

2010-08-12 15:35:44

Flex事件機制

2010-08-04 13:52:53

Flex事件機制

2010-08-04 13:23:29

Flex事件

2010-08-09 11:14:36

Flex事件處理

2010-08-12 13:59:37

FlexList控件

2010-08-04 14:07:59

Flex事件機制

2010-08-04 14:02:08

Flex事件機制

2010-08-13 13:56:02

Flex事件機制

2010-07-29 10:40:12

2017-02-21 12:20:20

Android事件分發機制實例解析

2023-10-08 08:23:44

Android事件邏輯

2010-08-13 14:19:44

Flex綁定機制

2010-08-04 11:15:22

Flex事件處理
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 婷婷去俺也去 | 日本精a在线观看 | 91婷婷韩国欧美一区二区 | 小早川怜子xxxxaⅴ在线 | 99精品一级欧美片免费播放 | 中文字幕在线免费 | 91资源在线 | 玩丰满女领导对白露脸hd | 成人h动漫精品一区二区器材 | 天堂影院av| 中文字幕一区二区三区精彩视频 | 日韩中文在线 | 精品综合久久久 | 伊人久久大香线 | 色婷婷综合久久久久中文一区二区 | 久久久精彩视频 | 一区二区三区免费网站 | cao视频| 91性高湖久久久久久久久_久久99 | 精品欧美一区二区三区久久久小说 | 亚洲视频一区在线观看 | 免费福利视频一区二区三区 | 青青草一区二区三区 | 精品欧美一区二区三区久久久 | 欧美最猛性xxxxx亚洲精品 | 成人片免费看 | 一区二区三区欧美大片 | 国产日韩一区二区三区 | 久久69精品久久久久久久电影好 | 国产在线观看 | 亚洲成年在线 | 99爱在线免费观看 | www中文字幕 | 日本三级做a全过程在线观看 | 欧美在线天堂 | 91中文字幕在线观看 | 无码日韩精品一区二区免费 | 国产精品三级 | 激情欧美一区二区三区中文字幕 | 国产精品欧美一区二区三区不卡 | 99精品免费久久久久久久久日本 |