美文网首页
Cocos2d-X tableView滑动时触发button响应

Cocos2d-X tableView滑动时触发button响应

作者: RephontilZhou | 来源:发表于2018-05-21 14:39 被阅读297次

    【原创博文,转载请注明出处!】

    看图:游戏俱乐部玩法下面显示成这种风格,第一个固定是创建房间,后面是该玩法下所有的房间。
    问题1:用什么来实现? UICollectionView?不好意思,cocos2d没有UICollectionView这个东西,只有tableView和scrollView。

    那就用tableView将就吧。。。(一个cell上面放两个大的button或sprite作为containerView吧,至于赋值嘛,根据cell的索引index,左边button为数据模型为 dataArr[ 2* index], 右边button的数据模型为 dataArr[ 2* index + 1])这个借助数列的规律可以有多种处理方法。


    效果图.png
    难点来了!BiuBiuBiu O(∩_∩)O~~
    问题2:由于上面的button面积太大,并且要求能够触发的面积也大,这样在cell滑动的时候,几乎100%能直接触发button的响应事件(不能忍),毕竟一个cell上面两个button(sprite等),不可能像原生一样直接在cellTouched的代理方法里面实现响应。

    网上看了好多博客,许多都是观望的,唯一能给人点希望的就是更改cocos2d的底层源码,在cellTouched代理方法里面新增一个point(点击位置)参数,据此判断点击的是处于cell的大概位置,然后拦截响应,分发给左边还是右边的button。毕竟团队开发,每个小伙伴的源码都在自己的本地,改框架底层源码并不是很省事的行为。

    正确的姿势: 在tableView被拖动的过程中拦截掉button的点击响应事件!(切记:不是tableView滚动,是手拖动!因为滚动的时候手离开了屏幕,也就不会触碰到任何控件,我们只需要防止手指拖动tableView的误触发)

    step 1:定义一个变量 👉: bool isDragging = false;
    定义变量isDragging.png
    step 2:滚动中实时获取手指拖动状态。
    step 3:tableView还在被拖动的时候触发了button,直接拦截响应事件。
    拦截响应事件.png
    praise.jpeg

    相关文章

      网友评论

          本文标题:Cocos2d-X tableView滑动时触发button响应

          本文链接:https://www.haomeiwen.com/subject/shwfjftx.html