真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯網站制作重慶分公司

Flex事件機制中Flex事件分發(fā)和監(jiān)聽的示例分析

這篇文章給大家分享的是有關Flex事件機制中Flex事件分發(fā)和監(jiān)聽的示例分析的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

十載的德惠網站建設經驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。成都全網營銷的優(yōu)勢是能夠根據用戶設備顯示端的尺寸不同,自動調整德惠建站的顯示方式,使網站能夠適用不同顯示終端,在瀏覽器中調整網站的寬度,無論在任何一種瀏覽器上瀏覽網站,都能展現優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。成都創(chuàng)新互聯公司從事“德惠網站設計”,“德惠網站推廣”以來,每個客戶項目都認真落實執(zhí)行。

什么是Flex事件機制

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

1.Flex事件分發(fā)

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

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

1)Flex事件對象

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

示意代碼

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

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

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

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

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

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

2.Flex事件監(jiān)聽

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

比如:

  

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

testBtn.addEventListener(MouseEvent.CLICK,clickHandler);

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

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

3.關于異步和執(zhí)行順序

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

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

感謝各位的閱讀!關于“Flex事件機制中Flex事件分發(fā)和監(jiān)聽的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!


文章名稱:Flex事件機制中Flex事件分發(fā)和監(jiān)聽的示例分析
鏈接URL:http://weahome.cn/article/jggdee.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部