cocos2dx 从2.2.6 到3.16 升级流水记录
一个cocos2dx项目从2.2.6 升级至3.16 的过程,由于没有直升工具,类库升级也变动很大,有一部分需要手工完工升级。此记录供参考
1、 没有采用项目直升方式,先新建一个3.16的项目,然后把c++文件逐步转过来,不要项目直升,编译的错误会直接让你头昏,而害怕止步,首先转公共类库部分。
2、3.16的项目的字符集是 Unicode 字符集,改成多字节符集,如果你里面有大量的char操作,就建议改,不要改项目里面的函数,这里一步到位。

3. keyBackClicked 方法,改成onkeyBackClicked,3.16的不重写了。
改成
virtual void onKeyReleased(EventKeyboard::KeyCode keyCode, Event* event) override;
virtual void onkeyBackClicked();
cpp里面改成
void 你的类名::onKeyReleased(EventKeyboard::KeyCode keyCode, Event* event){
基类名称::onKeyReleased(keyCode, event);
if (keyCode == EventKeyboard::KeyCode::KEY_BACKSPACE)
{
onkeyBackClicked();
}
}
void CGameClientView_DZ::onkeyBackClicked()
{ 。。。 }
4. ccTouchBegan,ccTouchMoved,ccTouchEnded 改成onTouchBegan,onTouchMoved,onTouchEnded ,这部相对简单,但是每个都得改。。。
5. removeFromParentAndCleanup后访问对象带来的内存错误,在对象初始化完成后加CC_SAFE_RETAIN,销毁前再CC_SAFE_RELEASE就好了。
6. CCControlEvent 改成 Control::EventType,这个不是绝对,看调用的对象,如果是Widget 那就用Widget里面的。
7. registerWithTouchDispatcher 去掉,默认layer在3.16已经自己支持Touch,在对象的init方法中加 setTouchMode(cocos2d::Touch::DispatchMode::ONE_BY_ONE); 调用setTouchEnabled(true);不变,就会自动进入onTouchBegan了
8. CCMenuItemSprite::create 说参数不符的地方,例如
CCMenuItemSprite::create(CCSprite::createWithSpriteFrameName("xxx.png"),CCSprite::createWithSpriteFrameName("xxx_SEL.png"), this, menu_selector(CGameClientView_DZ::backCallback));
改成:CC_CALLBACK_1(CGameClientView_DZ::backCallback, this) 。
这个要更改的地方多。
9. CCControlEventValueChanged 改成 Control::EventType::VALUE_CHANGED
10. setTouchPriority 可以去掉,目前3.16按层次传递事件,你看实际情况改代码设置优先级,已经不采用setTouchPriority 这种方式。很多地方可以直接去掉,对话框的话用有对话框的方式,不是setTouchPriority .
11. callfuncN_selector 转换无效的话,改成CC_CALLBACK_0,例如:
CCCallFuncN::create(PlayVoice,callfuncN_selector(CCSprite::removeFromParent))
改成 CallFuncN::create(CC_CALLBACK_0(CCSprite::removeFromParent, PlayVoice))
12. CCLog 通不过的话,用CCLOG
13. CCPointZero , ccWhite 等常量值编译不同过的话,改成 Vec2() , Color3B::WHITE等。
14. 未完待续
目前项目大部分已经转换完成,可以运行了,少量的还在修改,效果还行,不用整天找2.2.6的问题查了。
以上很多可以做字符替换方式。
cocos2dx 从2.2.6 到3.16 升级流水记录的更多相关文章
- cocos2d-x 3.1.1 学习笔记[16] Particle 粒子效果
//plist文件中面有粒子效果的各种參数 //textureFileName相应着使用粒子的图片 auto particle = ParticleSystemQuad::create("s ...
- 2016.8.16 JQuery学习记录
1.$(document).ready(function(){}); 这个函数会在浏览器加载完页面之后,尽快执行: 2.所有的JQuery函数用有个$开始表示,All jQuery functions ...
- 【Cocos2d-x】VS2012开发2dx无法解析的外部符号解决记录(第一篇)【转】
come from http://acoder.me/cocos2d-unresolved-external-symbol.html 看到cocos2d-x带了扩展包,心动的想尝试下,以下分享下我使用 ...
- [cocos2dx]2.2到3.1(3.0)升级帮助
摘要: cocos2dx 是一款优秀的多平台,专为2D游戏设计的引擎. 在活跃的开源社区的推进下, 越发稳定和强大. 2.x -> 3.x的更新幅度很大, 性能的提升和功能的丰富也非常明显. 但 ...
- 搭建Hive 2.1.1 基于Hadoop 2.6.1 和 Ubuntu 16.0.4 记录
Hadoop Hive Hbase 对应版本 Hive官网下载 我们以Hadoop版本作为参考适配Hive Hbase即可, Hadoop版本是2.6.1 所以可以选择Hive1.2.1以上版 ...
- 宝爷Debug小记——Cocos2d-x(3.13之前的版本)底层BUG导致Spine渲染花屏
最近在工作中碰到不少棘手的BUG,其中的一个是Spine骨骼的渲染花屏,在战斗中派发出大量士兵之后有概率出现花屏闪烁(如下图所示),这种莫名奇妙且难以重现的BUG最为蛋疼. 前段时间为了提高Spi ...
- ChemDraw 16最新版本发布 更效率科研的首选
ChemDraw一直是全球领先的科学绘图软件,致力于为科学家.教师以及学生提供最新的智能应用程序.ChemDraw 16版本相较于15版本做出了较大的改进,大大缩短科研时间,提高科研效率.扩展Name ...
- ChemOffice Professional 16.0新增了哪些功能
ChemOffice Professional 16.0是为终极化学和生物组件设计,可满足化学家和生物学家的需求.ChemOffice Professional帮助科学家有效地检索数据库,包括SciF ...
- Cocos2d-x V3.2+Cocos Studio1.6 实现一个简单的uibutton点击功能
好久没写博客了 这几天在学习cocos studio,这个软件可以很方便的设计游戏的一些界面,并导入到cocos2dx中,今天就用button来做个样例 首先我们打开Cocos Studio1.6,选 ...
随机推荐
- SQL Server-聚焦sp_executesql执行动态SQL查询性能真的比exec好?
前言 之前我们已经讨论过动态SQL查询呢?这里为何再来探讨一番呢?因为其中还是存在一定问题,如标题所言,很多面试题也好或者有些博客也好都在说在执行动态SQL查询时sp_executesql的性能比ex ...
- SLAM入门之视觉里程计(5):单应矩阵
在之前的博文OpenCV,计算两幅图像的单应矩阵,介绍调用OpenCV中的函数,通过4对对应的点的坐标计算两个图像之间单应矩阵\(H\),然后调用射影变换函数,将一幅图像变换到另一幅图像的视角中.当时 ...
- 利用jquery encoder解决XSS脚本注入所产生的问题
问题现象:前端接收到后台一个数据(其中包含html)标签,自动转译成html页面元素,且自动执行了脚本,造成了前端页面的阻塞 接受的后台数据为大量重复的如下代码 ");</script ...
- better-scroll不能滚动之 滚动监听-左右联动
滚动监听 better-scroll 无法滚动的分析,直接翻到最后,看问题汇总,希望能帮助你解决. 借用一下人家这个好看的项目图片,做一个解释.左边的内容会跟右边的内容一起关联,点击左边的菜单,右边会 ...
- inline函数不能在for循环中使用的原因
inline函数的作用继承了宏定义的优点,没有了参数压栈,代码生成等一部分操作,并且摒弃了没有检查编译规则的缺点: 另外要注意,内联函数一般只会用在函数内容非常简单的时候,这是因为,内联函数的代码会在 ...
- IO流与IO缓冲
1.字节与字符的演变 public class inputStream { public static void test1() throws Exception{ File file= new Fi ...
- RabbitMQ的基本使用到高级特性
简介 继上一篇 CentOS上安装RabbitMQ讲述RabbitMQ具体安装后,这一篇讲述RabbitMQ在C#的使用,这里将从基本用法到高级特性的使用讲述. 前序条件 这里需要增加一个用户,并且设 ...
- b9934107349625014ec251e1333d73a8 这个代码是mad5值
Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护.该算法的文件号为RFC 1321(R.Rives ...
- Vijos P1114 FBI树【DFS模拟,二叉树入门】
描述 我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全“1”串称为I串,既含“0”又含“1”的串则称为F串. FBI树是一种二叉树1,它的结点类型也包括F结点,B结点和I结点三种 ...
- 关于python 2.7要求输出汉字问题
对于python 2.7,使用print u'好好学习'会出现异常.可用以下作为汉字输出,获取数据(字符串)时,用unicode(str, "utf8")生成unicode对象 p ...