一个大按钮中有一个小按钮 如何让两个按钮的点击事件错开

希望是点击大按钮时 小按钮也会缩放
但是点击小按钮时只有现金按钮缩放
并且两个按钮的onClick方法也是独立的
不知道能不能实现
已邀请:

SunHowe

赞同来自: pishone ankisme

这个牵涉到事件的冒泡传递机制。
https://www.fairygui.com/docs/unity/event#eventcontext
 


StopPropagation 点击子节点的区域,父节点也能收到触摸事件,这就是事件冒泡的特性。如果你不想再向父节点传递,可以调用这个方法。


你可以在小按钮的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 这个事件控制切换的

要回复问题请先登录注册