所有Event对象都有target和currentTarget属性,target属性可引用事件分派对象,currentTarget属性可引用正在被检测事件监听器的当前节点。
在事件将在控件链中向上冒泡,在此过程中target始终不变,currentTarget在每个向上移动的过程中及时改变。
例如当用户点击一个Button控件,很可能事件派发者是Button的内部子组件UITextField,事件向上冒泡过程中target始终为 UITextField不变,但currentTarget会逐步冒泡到Button组件,这时,触发了在Button上监听的Click事件处理函数。
综上,开发人员一般使用event.currentTarget属性,event.target属性很少使用。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
private function onClick(event:MouseEvent):void
{
trace("event.target:" + event.target);
trace("event.currentTarget:" + event.currentTarget);
}
]]>
</mx:Script>
<mx:Canvas id="outermostContainer" width="324" height="215" click="onClick(event);"
backgroundColor="#00BB00">
<mx:Canvas id="canvasContainer" width="249" height="108" click="onClick(event);"
backgroundColor="#00FF00" >
<mx:Button id="btnTest" label="点击测试" fontSize="25" x="59.5" y="34" />
</mx:Canvas>
</mx:Canvas>
</mx:Application>
1.when click button, then u can trace as below:
event.target:hhhhhh0.outermostContainer.canvasContainer.btnTest
event.currentTarget:hhhhhh0.outermostContainer.canvasContainer
event.target:hhhhhh0.outermostContainer.canvasContainer.btnTest
event.currentTarget:hhhhhh0.outermostContainer
2.click canvasContainer
event.target:hhhhhh0.outermostContainer.canvasContainer
event.currentTarget:hhhhhh0.outermostContainer.canvasContainer
event.target:hhhhhh0.outermostContainer.canvasContainer
event.currentTarget:hhhhhh0.outermostContainer
3.click outermostContainer
event.target:hhhhhh0.outermostContainer
event.currentTarget:hhhhhh0.outermostContainer