Re: [問題] addEventListener()
※ 引述《scars (超:新:星)》之銘言:
: 不一樣
: 例如將一個Listener註冊到某Sprite好了
: 假設那個Sprite contains另一個 MovieClip
: 在MovieClip點一下,
: e.target 會是MovieClip
: e.currentTarget 會是Sprite
講詳細一點的話,應該是這樣:
spriteA包含spriteB
其中註冊的listener如下
spriteA.addEventListener(MouseEvent.CLICK, clickA);
spriteB.addEventListener(MouseEvent.CLICK, clickB);
我在spriteB上面點一下
這個時候AS3跟AS2的event processing mechanism一大不同點出現了
AS3的Event有所謂的Event Flow
也就是一個Event object會從display list最底層(預設)傳到最上層
最底層的物件就是e.target
目前Event object傳送到的層級則是e.currentTarget
所以當你按下spriteB的時候
clickB會先執行,然後是clickA
對於clickB而言,e.target和e.currentTarget都是spriteB
對於clickA而言,e.target是spriteB,e.currentTarget則是spriteA
這種由下而上的路徑是所謂的bubble phase,預設註冊listener是監聽這一路徑
要監聽由上而下的capture phase的話
addEventListener()的useCapture參數要傳入true
--
CJ Cat = Croa'J Cat = Cockroach Cat = 西街凱特 = 蜚蠊貓 = 蟑螂貓
Blog http://cjcat.blogspot.com
Gallery http://cjcat2266.deviantart.com
ptt2 Board CJWorkshop - 阿多比閃光(Adobe Flash)研討區
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.228.74.144
※ 編輯: cjcat2266 來自: 61.228.74.144 (06/12 22:48)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):