云下的天空

          堅持 隨心而動 走自己的路

           

          (轉載)冒泡事件理解

            原文鏈接:http://bbs.9ria.com/viewthread.php?tid=59522

          發生事件時,該事件在事件流的三個階段中移動:
          捕獲階段,該階段從顯示列表層次結構的頂部流動到目標節點之前的節點;
          目標階段,該階段只包括目標節點;
          冒泡階段,該階段從目標節點的后續節點沿顯示列表層次結構向上往回流動。
          EventDispatcher 類實現 IEventDispatcher 接口,并且是 DisplayObject 類的基類。 EventDispatcher 類允許顯示列表上的任何對象都是一個事件目標,同樣允許使用 IEventDispatcher 接口的方法。 
          事件目標是 Flash ® Player 事件模型的重要組成部分。 

          事件目標是事件如何通過顯示列表層次結構這一問題的焦點
          當發生鼠標單擊或按鍵等事件時,Flash Player 會將事件對象調度到從顯示列表根開始的事件流中
          然后該事件對象在顯示列表中前進,直到到達事件目標,然后從這一點開始其在顯示列表中的回程
          在概念上,到事件目標的此往返行程被劃分為三個階段:
          、、捕獲階段包括從根到事件目標節點之前的最后一個節點的行程,
          、、目標階段僅包括事件目標節點,
          、、冒泡階段包括回程上遇到的任何后續節點到顯示列表的根。
          通常,使用戶定義的類能夠調度事件的最簡單方法是擴展 EventDispatcher。 如果無法擴展(即,如果該類已經擴展了另一個類),則可以實現 IEventDispatcher 接口,創建 EventDispatcher 成員,并編寫一些簡單的掛鉤,將調用連接到聚合的 EventDispatcher 中。
          二、說明 首先明確幾個概念
          1、顯示列表根:假如你有abc 三個panel c在b中 b在a中這樣的嵌套關系 那么c-->b-->a  a就是列表的根
          2、目標:假如你在c上發了一個事件那么c就是事件的目標 有些復雜控件有click事件 不過發事件的目標不是它本身 那個currenttarget才是它本身
          3、事件傳遞的流程:首先你派發事件在c上 事件首先從a-->b-->c-->b-->a這樣一個完整的循環
          4、捕獲階段:事件在a-->b的這個階段(注意和b-->a不同)
          5、目標階段 僅當事件到達c的時候
          6、冒泡階段 b-->a這樣經過的階段
          三、具體應用
          當你在c上面派發了一個事件  然后你想在c的頂層a上監聽到
          你可能這么做
          首先你在c上this.dispatchEvent(new Event("cevent",false)); 這樣發了一個事件
          藍色字體 意味著這個事件只會在捕獲和目標階段 a->b->c
          然后你在a上監聽這個事件 a.addEventListener("cevent",function():void{trace("原始論壇目標發出的事件");},false);
          紅色字體 意味著你打算 讓偵聽器只在目標或冒泡階段處理事件 就是c->b->a
          四、簡單說來就是 你發出的事件走的是a->b->c的階段 而你偵聽只想偵聽b->a階段c只走了一次所以不會檢測到c的事件
          任何一個false改成true就可以了
          藍色改成true意味著事件在所有過程傳遞
          紅色改成true意味著偵聽捕獲階段
          再簡單說 新建事件不冒泡 默認偵聽只偵聽冒泡

          posted on 2011-06-05 18:04 天空布藍 閱讀(537) 評論(0)  編輯  收藏 所屬分類: Flex4

          導航

          統計

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          Flex學習鏈接

          搜索

          •  

          最新評論

          • 1.?re: tomcat7的配置
          • 新建變量名: TOMCAT_HOME 應該為CATALINA_HOME
          • --houkai
          • 2.?re: tomcat7的配置
          • 確實是的@寒澈
          • --houkai
          • 3.?re: tomcat7的配置
          • @ftp123
            你娘里個大雪碧 里面會有common這個文件夾嗎 不知道還尼瑪在這瞎比比 純尼瑪誤導人 我最惡心的就是這樣沒事裝逼的人 艸
          • --cao
          • 4.?re: tomcat7的配置
          • 從哪抄來的,是抄的,你也說聲啊,要不自己測試下也可以,害人測試半天。
          • --ftp123
          • 5.?re: tomcat7的配置
          • %TOMCAT_HOME%\common\lib 從tomcat6.0開始已經沒有common文件夾了,直接用\lib,害我找了半天common文件夾啊,趕快改過來吧
          • --寒澈

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 苍梧县| 民丰县| 加查县| 闽清县| 大足县| 眉山市| 商都县| 集贤县| 嘉定区| 唐山市| 麦盖提县| 澎湖县| 乌什县| 湖口县| 德清县| 武强县| 鄂州市| 福建省| 高陵县| 大余县| 青神县| 康乐县| 舒兰市| 浦北县| 洛扎县| 台东县| 南宫市| 休宁县| 丁青县| 宣武区| 商都县| 葵青区| 永吉县| 文化| 大厂| 旺苍县| 巢湖市| 通榆县| 麟游县| 南充市| 五台县|