Cocos2dx中Scrollview控件滑动与其子控件监听冲突的解决方案(不改底层、最优)

语言环境:

Cocos2dx 3.6

Lua 5.1

UI编辑器:Cocos Studio v2.0.6

问题:Scrollview控件滑动与其子控件监听发生冲突。

在点击子控件时,若在子控件上进行移动,父容器Scrollview不会执行滑动事件,像是被吞噬了一样

我的解决思路是不改底层,通过逻辑来控制。直接上代码:

local moveOrReq = nil --移动或请求
local countMove = 1   --移动计次
--监听事件:按钮(子控件)
local TouchEventByBtn = function (obj,e)
	if e == ccui.TouchEventType.began then      ---0
		moveOrReq = nil
		countMove = 1
	elseif e == ccui.TouchEventType.moved then   ---1
		countMove = countMove + 1
		if countMove > 10 then
			moveOrReq = "move"
		end
	elseif e == ccui.TouchEventType.ended and moveOrReq == nil then    ---2(重点:执行事件放这里)
		--这里执行需要执行的按钮事件
	elseif e == ccui.TouchEventType.canceled then        ---3
		moveOrReq = nil
	end
end

以上代码是子控件的监听执行事件,这里子控件我采用的是Button,对每一个子控件进行监听,父容器Scrollview不监听

要注意:若出现无法移动的情况。多半是Button吞噬了Scrollview,在创建每一个子控件时加上这一句代码:

btn:setSwallowTouches(false)

以上的解决思路是我综合不改底层情况下在脚本层解决的最优思路,当然,若为了所有的情况都避免,可以自定义监听,也可以自己封装继承函数

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值