1. 程式人生 > >Event的target和currentTarget的區別

Event的target和currentTarget的區別

target 是指向最底層的可接受滑鼠事件的物件  如果設定了  mouseChildren = false ,則到達此層就是最底層可接受滑鼠事件的物件了。

currentTarget是指事件流的當前階段偵聽物件。



  as3的事件機制優於as2的好處是

as2如果一個影片剪輯 包裹 一個按鈕,如果為影片剪輯添加了任何事件處理,那麼內部的按鈕事件就會失去效果,意思即是說 as2的事件機制是即時攔截,一攔截到就執行,不會再向內層物件傳遞的了。

在as2中比如做一個小黑板的拖動  和 右上角一個關閉按鈕 就會很麻煩 ,要分成兩個不內嵌的影片剪輯或按鈕。


而as3它的事件機制是,按照巢狀關係,在滑鼠點選處一直向下遍歷,這個過程是事件流機制中的 捕獲階段;

當找到最後一層可以接受滑鼠事件的物件時  這叫 目標階段;

然後會啟動一個向上沿路迴流的階段 這叫 冒泡階段;


targe在整個事件流機制過程中 都是不變的  指向 目標階段中所存在的最底一層可以接受滑鼠的事件物件。

而currentTarget則是隨著
事件流
不同的階段 指向流中當前的事件偵聽物件。


比如一個影片剪輯包裹一個按鈕   在按鈕上點選    由此至終 target都是指向按鈕,而如果除了偵聽按鈕的 MouseEvent.CLICK事件外  還令上層影片剪輯同時偵聽 MouseEvent.CLICK事件的話,因為沿途有偵聽   在冒泡階段  事件流就會針對這個偵聽作出響應。

亦即是說 只有偵聽的物件才會令到 currentTarget物件產生變化。
這種事件機制的好處是保證了整個影片所有物件都平等地分享同一個滑鼠或鍵盤等互動事件的消費,不會被提前攔截而令後續物件沒法偵聽到。