由quick2升级到cocos2d-x3.8的一些体会

本文深入探讨了从Quick2到3.x版本的C++代码迁移策略,包括框架整合、命名变更、功能调整及注意事项。重点介绍了如何简化代码生成流程、优化层间事件传递、解决依赖冲突,并提供了解决libpng警告的方法。同时,文章揭示了在代码移植过程中遇到的设计缺陷,以及如何改进全局变量和回调函数的使用方式,以提高代码的可读性和效率。最后,分享了代码路径组织和C++代码与Lua绑定的最佳实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文介绍一些大致的思路以及需要的方法,在细节层次还有很多的东西需要注意,并且要做更深基础的迁移版本,还需要修改更多的C++代码才好。
quick2中使用的东西和3.x中变化确实很大,包括命名上。
quick使用的是一套framework,新工程中都通过一个framework来连接所有的接口,若添加了自己定义的文件,只需要重新生成一个framework.zip即可,很简单。

常用的如:

  • ccp() -> cc.p()
  • CCSize() -> cc.size()
  • getZOrder() -> getLocalZOrder()
  • CCFileUtils:sharedFileUtils()-> cc.FileUtils:getInstance()
  • CCDirector -> cc.Director

另外,layer层的点击事件也默认为向下传递,若设置不可向下传递则需setTouchSwallowEnabled(false)。
此外,还有很多细节的东西发生了变化,开发者可以根据最新的源码来看到底是修改成了什么样子。
在文件:src/cocos/cocos2d/DeprecatedCocos2dFunc.lua(详细描述的2.x到3.x的差异并会在log中提示)

libpng 对GIMP生成的png报错
libpng warning: iCCP: known incorrect sRGB profile
原因是新版的libpng增强了检查,发出警告。此警告可以忽略。
若要消除此警告则要使用v4的色彩配置。 下载说明见末尾。 more http://blog.sina.com.cn/s/blog_489988100101gmcl.html

  • 另外也发现了一些设计不好的地方,就是在创建tableView的过程中,在registerScriptHandler()方法中注册table的事件的时候,考虑到内存释放的问题,所有的全局变量都要写成self._xxxx的形式, 并且回调函数都要写作xxx:func的形式,而不是xxx.func的形式,导致所有在回调函数中要使用全局变量的时候,这些回调函数都要写到注册事件中,写成匿名函数的方法来实现,这样就使得代码变的异常的臃肿,并且代码也显得非常的不清晰。我个人觉得,在一个文件中写全局变量应该是没问题的,当这个界面被释放掉的时候,这个全局变量也会被对应的释放掉,而不用非得写成self.xxx这种古怪的样子。
  • 至于代码的路径如何组织,这个问题很简单了,修改下main.lua和config.json等文件就可以了。顺便做一个替身(命令:ln -s ,注意:要使用绝对路径!)

若要把代码移植工作做的更好,最好还是要写C++的代码,然后通过工具来将C++的代码绑定到lua上,这样才最方便

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值