位置: 编程技术 - 正文

cocos2dx之TableView和ScrollView的混合使用(cocos2d-js-min.js)

编辑:rootadmin

推荐整理分享cocos2dx之TableView和ScrollView的混合使用(cocos2d-js-min.js),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:cocos2d官网,cocos 2,cocos webgl,cocos2dx官方教程,cocos2d html5,cocos 2,cocos2d官网,cocos2d html5,内容如对您有帮助,希望把文章链接给更多的朋友!

**************************************************************************

时间:--

作者:Sharing_Li

转载出处:

玩过《开心消消乐》这款游戏的人,应该知道里面有这样一处设计,如下图:

我们可以左右滑动界面,也可以上下滑动界面,左右滑动的时候不能上下滑动,上下滑动的时候不能左右滑动。这种效果可以用TableView和ScrollView来组合实现,即先弄一个ScrollView,然后把2个TableView当作内容放入这个ScrollView中就可以了,这种UI设计也应用在《开心消消乐》其好友信件中,只不过多了一个TableView。

接下来将进行代码讲解,cocos2dx的版本是3.2,先展示一下实现之后的效果图:

看完效果图,再看正文,定义一个类:CombineView

头文件:CombineView.h

再看看cpp文件的实现,这里对主要的代码进行讲解,想要完整代码和资源,请到文章末尾点击下载(0下载积分)。

我们写代码,要养成初始化成员变量的习惯,这样可以避免一些意想不到的错误。同时记住不用的资源要记得释放。

cocos2dx之TableView和ScrollView的混合使用(cocos2d-js-min.js)

如效果图所示,我们要搞一个scrollview,这家伙呢,怀了5个月的三胞胎,分别是三个tableview。为了区别这三个儿子(喂,你怎么知道都是男的而不是女的),我们要给他们取名字,因为他们仨要共用一个函数即tableCellAtIndex,如果不取名,怎么知道谁是老二老三呢, 如头文件中定义的枚举类。

然后我们再来看看触摸函数的实现,首先是touchbegan:

简洁明了(.......),然后再看touchmoved:

这一段代码的意思是:如果你先垂直滑动,那么就将m_vertical设置为true,这样你就不能水平滑动了;如果你先水平滑动,就将m_horizontal设置为true,因而调用函数SetTouch,对着三个孩子tableview唱摇篮曲,要他们乖乖睡觉不要乱动。然后再来看看touchended:

这一段代码的意思是:if (fabsf(distance) < )这个if语句是对滑动效果的优化,如果滑动很小距离,那么就忽视这次滑动,视图还是老样子,效果图如下:

这下应该一目了然了吧,接下来的代码是判断是先垂直滑动还是水平滑动,如果是先垂直,则直接return,return之前呢要还原m_curPage的&#;。如果是先水平,则要把三个熟睡的孩子搞醒。然后是对scrollview最终显示界面的调整:

未列出的部分代码如下:

最后,完了。。。。。。。。。。才怪!

代码其实有问题,我故意留了一个bug,不知道大家发现没,这个bug不解决的话,程序跑起来会崩溃的。如果按照我之前的代码来运行的话,会在tableCellAtIndex函数中崩溃,这是为什么呢?因为我们在创建tableview的时候,给每个tableview设置tag并没有成功,那为什么没成功呢?因为我们还没设置好tag的时候,tableCellAtIndex这斯就跑起来了,我们通过table->getTag(),其实是取不到tag的,既然取不到,那么之后就不能创建图片文字,会调用空指针,所以程序就BOOM了。那么罪魁祸首就是TableView::create(this,ViewSize);这个家伙了,我们调试跟踪进源码,如下:

倒数第二句table->_updateContentSize();里面会调用tableCellAtIndex这个函数。那么找到问题了该怎么解决呢,难懂要改源码?不用,我们可以这样创建tableview,如下:

那么为什么不把table->_updateCellPositions();也搞进来,因为这是保护成员函数,所以不能访问,而且也用不上,以后遇到类&#;的问题也可以这样解决。然后把三个tableview改过来就ok啦。

代码及资源下载处:

Cocos2dx CCLabelAtlas字体与CCLabelTTF字体的使用方法 1.、字体1、CCLabelAtlas字体示例代码:CCLabelAtlas*LBsocre4=CCLabelAtlas::create(CCString::createWithFormat(%d,c)-getCString(),labelatlasimg.png,,,'0');LBsocre4-setAnchorPoint(ccp(0,0.

Bullet(Cocos2dx)之创建地形 Bullet提供了几个类btBvhTriangleMeshShape,btHeightfieldTerrainShape去创建一些网图形,首先了解btHeightfieldTerrainShape,通过高度图数据创建一个3D地形。Astaticmeshthat

Cocos2dx ParticleEditor粒子编辑器 下载地址:程序调用代码:(plist文件要和贴图在同一目录)//创建粒子对象CCParticleSystem*lizi=newCCParticleSystemQuad();//设置plist动画文件lizi-initWithFile(rain1.pli

标签: cocos2d-js-min.js

本文链接地址:https://www.jiuchutong.com/biancheng/372650.html 转载请保留说明!

上一篇:cocos2dx3.2开发 RPG《Flighting》(二)骨骼动画介绍及游戏美术资源分享(cocos开发游戏)

下一篇:Cocos2dx CCLabelAtlas字体与CCLabelTTF字体的使用方法

  • 个人名义开工程发票税率是多少
  • 防火门属于固定式防火风格
  • 独资企业和公司的优缺点
  • 银行开户手续费怎么开发票
  • 核定征收财务报表
  • 所有者投入的资本属于什么科目
  • 现金形式发放的福利需要扣税吗
  • 农产品为什么价格低
  • 养老保险补缴利率是多少
  • 个税专项扣除如何迁移
  • 销售收入冲红如何入账
  • 社保扣款不成功会短信提醒吗
  • 借款合同印花税减免优惠政策
  • 补缴的公积金可以抵扣个税吗
  • 税务与审计调整结果不一致该如何调整?
  • 增值税发票委托公司开具
  • 购货方红字发票信息表怎么开
  • 关于小规模纳税人
  • 开劳务分包发票需要什么条件?
  • 税控设备抵减如何填写报表
  • 税务局开的专票可以抵扣吗
  • 留抵税额如何抵扣
  • 清理血管垃圾最有效的食物
  • 新版edge浏览器历史记录
  • 会计的职责概述
  • 分配利润给股东怎么做分录
  • 个人综合所得适用什么税率?
  • 弥补亏损的会计分录是怎样的
  • 计算机系统结构第三版课后答案
  • PHP:xml_set_end_namespace_decl_handler()的用法_XML解析器函数
  • Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
  • mac如何修改
  • 交易性金融资产属于什么科目
  • nullable object must have a value
  • springboot常用
  • 80岁以上老年卡上的钱如何消费
  • php中哪个命令用来删除当前目录
  • 日落时有什么变化
  • thinkphp教程
  • python opencv如何获取图片尺寸
  • 所有者权益总计怎么算沙盘
  • 股东出资方式包括
  • 小规模纳税人一年不超过多少万
  • 如何计提所得税费用科目
  • 汽车进项税什么时候抵扣
  • 小规模纳税人没达到起征点怎么申报
  • 福利部门的福利有哪些
  • SQL(MSSQLSERVER)服务启动错误代码3414的解决方法
  • 坏账准备的应提数
  • 公司借款利息可以约定由某一股东承担
  • 购进货物用于建筑安装
  • 转让无形资产使用权
  • 税务登记证证书编号是什么
  • 计提的费用收到发票时候怎么做账
  • 应收账款周转速度快表明
  • 累计摊销的会计分录有哪些
  • 加工费如何开增票
  • 预付款退回来了怎么做账
  • 外币账户结汇至人民币账户
  • 销售方会计分录
  • 应收账款贷方余额应与什么科目合并后填入报表
  • 维保业务怎么开展
  • 总分机构和分总机构的区别
  • 调整后视镜
  • sql server 2019自定义安装教程
  • 数据库查询排名
  • windows7升级到windows8.1
  • WIN10系统怎么删除3Dmax
  • xp系统换成win10
  • linux集群的作用和意义
  • win8个性化设置
  • win10应用商店不好用
  • linux系统硬盘分区类型
  • win8系统自带浏览器
  • pycharm安装教程2020.2
  • js如何将输入的数存到数组中
  • 河南省国税电子普通发票发票真伪查询系统
  • 税务干部转正工作总结
  • 给派出所写情况说明房屋情况怎么写啊
  • 财政法和经济法的关系
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设