你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
输入关键字进行搜索
搜索:
没有找到相关结果
SunHowe
赞同来自: pishone 、ankisme
StopPropagation 点击子节点的区域,父节点也能收到触摸事件,这就是事件冒泡的特性。如果你不想再向父节点传递,可以调用这个方法。
pishone
赞同来自: Glimmer 、ankisme
要回复问题请先登录或注册
2 个回复
SunHowe
赞同来自: pishone 、ankisme
https://www.fairygui.com/docs/unity/event#eventcontext
你可以在小按钮的onClick、onTouchBegin等事件中,调用eventContext.StopPropagation(),这样它就不会传给大按钮了
pishone
赞同来自: Glimmer 、ankisme
首先是问题产生的原因:FGUI存在事件的冒泡传递机制,当组件内的某个小组件触发了事件 该事件会向父级传递
例如 大按钮嵌套的小按钮被点击时 大按钮的点击事件也被触发(PS:点击时 除了触发onClick事件 还会触发 onTouchBegin等事件 这些都会冒泡传递下去)
问题的解决方式是 : 在小按钮事件中屏蔽冒泡传递 例如:
Gbutton.onClick.Set((eventContext) => { eventContext.StopPropagation() })
同时如果希望屏蔽掉FGUI自带的按钮动画效果 需要在增加一个:
Gbutton.onTouchBegin.Set((eventContext) => { eventContext.StopPropagation() })
因为按钮按下的效果 例如缩放 其实是由 onTouchBegin 这个事件控制切换的