【原创博文,转载请注明出处!】
看图:游戏俱乐部玩法下面显示成这种风格,第一个固定是创建房间,后面是该玩法下所有的房间。
问题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.pngstep 2:滚动中实时获取手指拖动状态。
step 3:tableView还在被拖动的时候触发了button,直接拦截响应事件。
拦截响应事件.pngpraise.jpeg
网友评论