作者cjcat2266 (CJ Cat)
看板Flash
标题Re: [问题] addEventListener()
时间Thu Jun 12 22:26:24 2008
※ 引述《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)