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,选 ...
随机推荐
- 前端包管理工具 yarn
yarn 是一个 与 npm 类似的 前端包管理工具 安装 windows 要去官网下载 (一定要去官网下载 .mis 文件进行安装) 用npm 或者 cnpm 也能安装 但是这种安装 有缺 ...
- 如何继承Date对象?由一道题彻底弄懂JS继承。
前言 见解有限,如有描述不当之处,请帮忙及时指出,如有错误,会及时修正. ----------长文+多图预警,需要花费一定时间---------- 故事是从一次实际需求中开始的... 某天,某人向我寻 ...
- OpenCV2.4.9 Qt5.3.1 开发环境配置错误原因与解决方案
问题原因与解决办法 A.配置完成后,示例程序无法正常显示图片且程序无法运行 出现原因:环境变量未正确配置 解决办法:检查环境变量,添加缺失的环境变量 B.出"未定义的引用..."类 ...
- 微信小程序之两个页面传值
需求:发送页面点击某一个元素之后,获取该元素的属性值,然后把这些属性值传到接收页面中. 思路:获取当前点击元素的索引,就能获取当前元素的值,然后通过跳转的 url 地址传递值 还是整个完整的例子吧: ...
- WPF 依赖属性源码 洞察微软如何实现DependencyProperty
依赖属性DependencyProperty是wpf最重要的一个类,理解该类如何实现对学习wpf帮助很大! 终于找到了该类的源码!仔细阅读源码,看看微软如何玩的花招! File: Base\Syste ...
- VFS四大对象之一 struct super_block
linux虚拟文件系统四大对象: 1)超级块(super block) 2)索引节点(inode) 3)目录项(dentry) 4)文件对象(file) 现在先介绍第一个 一.super_block的 ...
- Spring Boot项目构建
环境准备 IDEA+JDK 1.8+Maven+mysql+SSM 1.使用Spring Boot框架可以大大加速Web应用的开发过程,首先在Maven项目依赖中引入spring-boot-start ...
- MongoDB批量操作及与MySQL效率对比
本文主要通过批量与非批量对比操作的方式介绍MongoDB的bulkWrite()方法的使用.顺带与关系型数据库MySQL进行对比,比较这两种不同类型数据库的效率.如果只是想学习bulkWrite()的 ...
- CTF---Web入门第十一题 PHP大法
PHP大法分值:20 来源: DUTCTF 难度:中 参与人数:8205人 Get Flag:2923人 答题人数:3042人 解题通过率:96% 注意备份文件 解题链接: http://ctf5.s ...
- 洛谷 P1876 开灯(思维,枚举,规律题)
P1876 开灯 题目背景 该题的题目是不是感到很眼熟呢? 事实上,如果你懂的方法,该题的代码简直不能再短. 但是如果你不懂得呢?那...(自己去想) 题目描述 首先所有的灯都是关的(注意是关!),编 ...