一个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 升级流水记录的更多相关文章

  1. cocos2d-x 3.1.1 学习笔记[16] Particle 粒子效果

    //plist文件中面有粒子效果的各种參数 //textureFileName相应着使用粒子的图片 auto particle = ParticleSystemQuad::create("s ...

  2. 2016.8.16 JQuery学习记录

    1.$(document).ready(function(){}); 这个函数会在浏览器加载完页面之后,尽快执行: 2.所有的JQuery函数用有个$开始表示,All jQuery functions ...

  3. 【Cocos2d-x】VS2012开发2dx无法解析的外部符号解决记录(第一篇)【转】

    come from http://acoder.me/cocos2d-unresolved-external-symbol.html 看到cocos2d-x带了扩展包,心动的想尝试下,以下分享下我使用 ...

  4. [cocos2dx]2.2到3.1(3.0)升级帮助

    摘要: cocos2dx 是一款优秀的多平台,专为2D游戏设计的引擎. 在活跃的开源社区的推进下, 越发稳定和强大. 2.x -> 3.x的更新幅度很大, 性能的提升和功能的丰富也非常明显. 但 ...

  5. 搭建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以上版 ...

  6. 宝爷Debug小记——Cocos2d-x(3.13之前的版本)底层BUG导致Spine渲染花屏

    最近在工作中碰到不少棘手的BUG,其中的一个是Spine骨骼的渲染花屏,在战斗中派发出大量士兵之后有概率出现花屏闪烁(如下图所示),这种莫名奇妙且难以重现的BUG最为蛋疼.   前段时间为了提高Spi ...

  7. ChemDraw 16最新版本发布 更效率科研的首选

    ChemDraw一直是全球领先的科学绘图软件,致力于为科学家.教师以及学生提供最新的智能应用程序.ChemDraw 16版本相较于15版本做出了较大的改进,大大缩短科研时间,提高科研效率.扩展Name ...

  8. ChemOffice Professional 16.0新增了哪些功能

    ChemOffice Professional 16.0是为终极化学和生物组件设计,可满足化学家和生物学家的需求.ChemOffice Professional帮助科学家有效地检索数据库,包括SciF ...

  9. Cocos2d-x V3.2+Cocos Studio1.6 实现一个简单的uibutton点击功能

    好久没写博客了 这几天在学习cocos studio,这个软件可以很方便的设计游戏的一些界面,并导入到cocos2dx中,今天就用button来做个样例 首先我们打开Cocos Studio1.6,选 ...

随机推荐

  1. python基础(四)字符串处理

    字符串处理 msg = 'my name is sylar' capitalize方法,将字符串的首字母大写 print 'capitalize方法:', msg.capitalize() swapc ...

  2. .NET Core RSA密钥的xml、pkcs1、pkcs8格式转换和JavaScript、Java等语言进行对接

    众所周知在.NET下的RSA类所生成的密钥为Xml格式,而其他语言比如java一般使用pkcs8格式的密钥,JavaScript一般使用pkcs1格式.我们在开发过程中很可能遇到需要与其他语言开发的a ...

  3. jQuery Mobile Slider 禁用点击事件

    阿子原创,转载请注明出处. 在使用jQuery Mobile Slider时,发现在页面上下拖动时,很容易不小心触发Slider的点击事件,从而造成误操作.为此需要禁用Slider的点击事件. 官方A ...

  4. 使用redis设计一个简单的分布式锁

    最近看了有关redis的一些东西,了解了redis的一下命令,就记录一下: redis中的setnx命令: 关于redis的操作命令,我们一般会使用set,get等一系列操作,数据结构也有很多,这里我 ...

  5. [转载]Tortoise SVN使用方法,简易图解

    刚到公司实习,为了版本控制,我公司使用SVN控制版本,在此记下SVN使用方法,仅供参考!           废话少说,上图!   ---------------------------------- ...

  6. python 中__setattr__, __getattr__,__getattribute__, __call__使用方法

    object._getattr_(self, name) 拦截点号运算.当对未定义的属性名称和实例进行点号运算时,就会用属性名作为字符串调用这个方法.如果继承树可以找到该属性,则不调用此方法 实例in ...

  7. Modelsim独立仿真Vivado Clocking Wizard IP Core

    工欲善其事,必先利其器.在使用Vivado自带的仿真软件仿真的时候,相对于更优秀的仿真工具Modelsim,效率低了很多,为了更高效的开发,我尝试着用Vivado级联Modelsim仿真,但是级联后还 ...

  8. 9、ABPZero系列教程之拼多多卖家工具 拼团提醒类库封装

    本篇开始正式做功能,我在开发拼团提醒之前,拼多多并没有放出拼团人数不足就提醒卖家的功能. 有这个想法主要来源于朋友的抱怨,我想这应该是大部分卖家的心声吧. 经过分析,拿到了几个api,不要问我api怎 ...

  9. atom编辑器启动后文件不能编辑的解决办法

    今天更新了atom,并且安装了很多插件,突然发现所有页面不能编辑了,如图 这个光标块会自动跳到单词后面,后来发现按一下键盘的字母a就变成正常光标了,至于原因,折腾了一个小时也没发现,后来百度到用Ctr ...

  10. 新浪新闻页面抓取(JAVA-Jsoup)

    1.使用gradle建立工程: 工程格式如下: include ':spider-demo' rootProject.name = 'my-spider-demo' settings def void ...