在AS3中触发从子级到父级的事件

时间:2011-10-31 11:51:47

标签: actionscript-3 mouseevent flash-cs5

我有一个与MouseEvent事件关联的CLICK函数的MovieClip。在这个MovieClip里面我有一个TextField。

所以,当我点击我的MovieClip时,处理程序工作正常。现在,当我点击这个TextField时我需要相同的行为,但是没有改变我的处理函数。我的意思是,如果用户点击TextField而不是MovieClip,我不想将e.target更改为e.target.parent

我该怎么做?

我的一些源代码:

public function Main(){
   var m = new menu();
   menuMng.addChild(m);
   m.addEventListener(MouseEvent.CLICK, openMenu);
}

private function openMenu(e:MouseEvent):void{
   // Do some stuff
}

提前致谢!

2 个答案:

答案 0 :(得分:4)

这是一个相当常见的问题 - 您可以使用event.currentTarget属性而不是event.target来引用添加了事件侦听器的对象。

有关更详细的答案,请查看此问题(不要担心它的Flex方面 - 这与标准的Actionscript 3行为有关): What is the difference between target and currenttarget in flex?

答案 1 :(得分:1)

您可以在MovieClip m上将问题设置mouseChildren属性修复为false。在这种情况下,单击文本字段将触发MouseEvent,就像用户单击m一样。 为清楚起见:

var m = new menu();
m.mouseChildren = false;
...

我希望这对你有用!