cocos2dx2.0版本改动疑惑

今天冒然下了2.0版本,变动还挺大的,不得不把原有项目做一番不小的改动,改动之处还比较多,这可能跟我原本使用cocos2dx的方法有关,但有一些对于2.0版本改变的不解之处:

1、为什么没有了CCFileData,改成了调用函数返回一个文件内容指针,使用上没之前版本方便不说,还要自己注意delete这个返回的指针,有些降低了易用性;
2、为什么把各种CCXXX::sharedXXX全部集中到了CCDirector::sharedDirector()->getXXX()呢?用起来不太方便呢,效率也没有原先CCXXX::sharedXXX这种方式高;
3、CCNode::setContentSize函数,早期版本是setContentSize(const CCSize &var),现在改成了setContentSize(CCSize var),我原本有个类覆盖了setContentSize以实现自定义的效果,由于函数原型变了,导致覆盖不生效了,不过还好很快找到了问题,改了我的类里覆盖函数的声明和定义就可以了,但不解的是为什么CCNode::setContentSize这个函数要改成不是传递引用值?
4、CCMutableArray类没有了?
5、重要的一个问题:2.0版的CCImageCommon.h类中读取png数据的代码,对png8文件的读取是有BUG的,会产生内存错误,而读取png32格式的png文件则没有问题,原因是申请的内存块比实际需要的内存长度要小。png8文件比png32要小很多,在丢失的色彩不明显的情况下我会普遍选择png8,因此我的项目里面包有很多png8格式的问题,这是我优化应用整体大小的一个重要方面,把所有的png8转成png32固然不会报错,但数量之多以及转换后造成的文件体积增加都使我不情愿这样做,所以只能将读取png的代码还原为1.x版本的代码以确保不会出错;

目前发现的就这个几个费解的问题,其中1、2、3、4仅代表个人观点,第5点应该是BUG。

貌似还有横竖屏切换

我来回答你的问题吧

  1. CCFileData的功能和CCFileUtils::getFileData重复了。它只是简单调用CCFileUtils的函数,然后析构时释放内存。我觉得让开发者自己管理内存会好些,而且减少重复功能。

2.各种CCXXX::sharedXXX全部集中到了CCDirector::sharedDirector()->getXXX()。这个是-iphone版本的设计。它的目的是方便创建多个CCDirector。

  1. 这个改动是因为子类的声明和父类不一致。不过我们应该确认一下可能需要把子类的声明都改成传递引用的形式。这个得确认一下。

4.直接用CCDictionary取代CCMutalbeDictionary。新版本的设计使得功能更清晰,没有更多困惑的地方。

5.这个问题我们还没有发现,能否提供示例代码帮助我们重现。谢谢

关于改动的说明可以参考这个文档
http://www.cocos2d-x.org/projects/cocos2d-x/wiki/Cocos2d-x_v20_migration_guide

— Begin quote from ____

minggo 发表于 2012-7-21 10:15 url

我来回答你的问题吧

  1. CCFileData的功能和CCFileUtils::getFileData重复了。它只是简单调用CCFileUtils的 …

— End quote

是的, 我也遇到第5个问题了,8位深的PNG无法加载,32位没问题的!!

我已经解决了该issue:
https://github.com/cocos2d/cocos2d-x/pull/1124

麻烦帮忙测试一下,谢谢。

我已经建立任务跟踪了
http://www.cocos2d-x.org/issues/1403

欢迎在该issue下添加注释、说明以方便我们解决bug。
谢谢。

什么平台,android还是iOS?

貌似还有横竖屏切换

我来回答你的问题吧

  1. CCFileData的功能和CCFileUtils::getFileData重复了。它只是简单调用CCFileUtils的函数,然后析构时释放内存。我觉得让开发者自己管理内存会好些,而且减少重复功能。

2.各种CCXXX::sharedXXX全部集中到了CCDirector::sharedDirector()->getXXX()。这个是-iphone版本的设计。它的目的是方便创建多个CCDirector。

  1. 这个改动是因为子类的声明和父类不一致。不过我们应该确认一下可能需要把子类的声明都改成传递引用的形式。这个得确认一下。

4.直接用CCDictionary取代CCMutalbeDictionary。新版本的设计使得功能更清晰,没有更多困惑的地方。

5.这个问题我们还没有发现,能否提供示例代码帮助我们重现。谢谢

关于改动的说明可以参考这个文档
http://www.cocos2d-x.org/projects/cocos2d-x/wiki/Cocos2d-x_v20_migration_guide

— Begin quote from ____

minggo 发表于 2012-7-21 10:15 url

我来回答你的问题吧

  1. CCFileData的功能和CCFileUtils::getFileData重复了。它只是简单调用CCFileUtils的 …

— End quote

是的, 我也遇到第5个问题了,8位深的PNG无法加载,32位没问题的!!

我已经解决了该issue:
https://github.com/cocos2d/cocos2d-x/pull/1124

麻烦帮忙测试一下,谢谢。

我已经建立任务跟踪了
http://www.cocos2d-x.org/issues/1403

欢迎在该issue下添加注释、说明以方便我们解决bug。
谢谢。

什么平台,android还是iOS?