可是拖了好久..想寫什麼大概也忘了
手邊有一些資料,姑且記錄一下吧~
以下節錄自SILK ROUTE - AS3筆記-事件流(event flow)
寫的很棒,非常建議先讀過
0. 只有 DiplayObject (inherit from InteractiveObject?) 會有事件流,這也難怪,因為其實最複雜的 heirarchical structure,就是在 UI 介面了,其他的像是XML的讀取事件,或是Video的串流事件,根本不太需要用到 Event Flow,大概一個層級就可以解決了.
1. 如果事件發生端以下全部的物件都屬於 displayObject的話, useCapture(Listener) 設成 true,或是 bubbles(Event) 設成 true ,在事件發生以下的物件(以一層層疊來看),都是可以聽的到的, 只是執行順序不同而已.
2. 發生事件的本身應屬於 useCapture = false 的範圍(也就是包括在 bubble phase 裡), 所以當 useCapture= true的時候會聽不到自己.
3. 有些內定 bubbles= ture 的 Event(像是MouseEvent), 在發佈端 dispatchEvent(new Event(「dispatch」,false)); 把 bubble 的值設改成 false 的話,會阻斷 bubble 的回流過程,也就是如果 useCapture=false(內定) 的話,Listener會聽不到東西.
Custom Event have to be in DisplayObject * = default of MouseEvent / KeyBoardEvent |
1 |
addEventListener (「type」,func, useCapture)) |
O.dispatchEvent (new Event (「type「,bubbles)) |
|
true | true* | o | ||
false | o | |||
false | true* | o | ||
false | x | |||
2 |
O.addEventListener (「type」,func, useCapture)) |
O.dispatchEvent (new Event (「type「,bubbles)) |
||
true | true* | x | ||
false | o | |||
false | true* | o | ||
false | o |
另外,也記錄一下一個重點
父swfload子swf時,子swf的事件強制bubble的話,可以在父swf監聽到
詳細情形還沒有研究過,待需要的時候再來研究好了( ̄▽ ̄#)﹏
參考:
SILK ROUTE - AS3筆記-事件流(event flow)
Adobe ActionScript 3.0 - 事件偵聽程式
Adobe ActionScript 3.0 - 處理外部資料
沒有留言:
張貼留言