点击子元素的时候不触发父元素的点击事件,怎么做

keanu196492 2010-12-15 11:27:14
A元素是父对象,B元素是A元素的子对象,两个对象都有单击事件,现在要求点击B的时候不触发A的事件,请问怎么设置

或者反过来,无论怎么点击A里面的子对象,都触发的是A的单击事件,怎么弄?

两种情况最好分别说明下,谢谢。
...全文
2099 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
leemiki 2010-12-15
  • 打赏
  • 举报
回复
对于始终触发A的MouseEvent.CLICK事件

可封装一个公共函数,父、子点击事件均执行该函数

为了避免点击子执行两次公共函数,也要阻止冒泡(同上)
leemiki 2010-12-15
  • 打赏
  • 举报
回复
MouseEvent.CLICK事件,buddle缺省值为true

点击子同时触发父就是因为事件冒泡导致!基于产生的原理,很简单就解决掉

测试Demo
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" initialize="init()"
backgroundGradientAlphas="[1.0, 1.0]" backgroundGradientColors="[#FFFFFF, #FFFFFF]">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
private function init():void{
cav.addEventListener(MouseEvent.CLICK,clickCanvas);
but.addEventListener(MouseEvent.CLICK,clickButton);
}

private function clickCanvas(event:MouseEvent):void{
Alert.show("Canvas被点击");
}

private function clickButton(event:MouseEvent):void{
event.stopPropagation();
Alert.show("Button被点击");
}
]]>
</mx:Script>

<mx:Canvas id="cav" width="200" height="200" borderStyle="inset">
<mx:Button id="but" label="哈哈" left="60" top="60" fontSize="16"/>
</mx:Canvas>
</mx:Application>
leemiki 2010-12-15
  • 打赏
  • 举报
回复
mouseChildren判断子对象是否支持鼠标(详细参照API)
keanu196492 2010-12-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 leemiki 的回复:]
对于始终触发A的MouseEvent.CLICK事件

可封装一个公共函数,父、子点击事件均执行该函数

为了避免点击子执行两次公共函数,也要阻止冒泡(同上)
[/Quote]

多谢指点,我再多问一句,那个mouseChildren属性是干嘛用的

之前看过一个label要显示手型的指针需要:buttonMode=true,useHandCursor=true,mouseChildren=false

4,328

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计 Flex
社区管理员
  • Flex
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧