AS3中从子级到父级的触发事件
我有一个 MovieClip,其中包含与 CLICK
事件关联的 MouseEvent
函数。在这个 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
}
提前致谢!
I have a MovieClip with a MouseEvent
function associated to CLICK
event. Inside of this MovieClip I have a TextField.
So, when I click on my MovieClip, the handler works fine. Now I need the same behaviour when I click on this TextField, but without change my handler function. I mean, I don't want to change e.target
to e.target.parent
if user clicked on TextField instead of MovieClip.
How can I do this?
Some of my source code:
public function Main(){
var m = new menu();
menuMng.addChild(m);
m.addEventListener(MouseEvent.CLICK, openMenu);
}
private function openMenu(e:MouseEvent):void{
// Do some stuff
}
Thanks in advance!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是一个相当常见的问题 - 您可以使用
event.currentTarget
属性而不是event.target
来引用添加了事件侦听器的对象。要获得更详细的答案,请查看这个问题(不要担心它的 Flex 方面 - 这与标准 Actionscript 3 行为有关):
flex中的target和currenttarget有什么区别?< /a>
This is a fairly common question - you can use the
event.currentTarget
property instead ofevent.target
to reference the object to which you added the event listener.For a more detailed answer check out this question (don't worry about the Flex aspect of it - this relates to standard Actionscript 3 behaviour):
What is the difference between target and currenttarget in flex?
您可以解决在 MovieClip m 上将
mouseChildren
属性设置为 false 的问题。在这种情况下,单击文本字段将触发 MouseEvent,就像用户单击 m 一样。为了清楚起见:
我希望这对您有用!
You can fix problem setting
mouseChildren
property to false on MovieClip m. In this case click on textfield will trigger MouseEvent like if user click on m.For clarity:
I hope this will be usefull to you!