Cocos2d-x 3.2 与 Cocos studio 之间不得不说的神坑

85427010 2014-09-04

很久没写博客了,最近项目需要用到Cocos2d-x来做客户端的开发。由于本人之前没有做过Cocos2d-x,所以以下内容可能比较片面,有什么不对之处,还请高手赐教。

这个问题可能对于使用Cocos2d-x很久的人并没有什么,但是会把我这种新手坑的找不到北。。。。

我要说的是关于使用CocosStudio UI编辑器导出的东西在程序中使用的问题。

截止2014年9月4日,CocosStudio 发布了windows版的1.6 和 Mac 版的 1.0.0 beta。

以我的理解,虽然两个平台版本不一样,但是在程序中的使用至少应该没太大区别吧。。。可是结果真的让我大跌眼镜。。。。

我们先来看下Cocos2d-x加载CocosStudio导出的UI的两种加载方式。

第一种:使用NodeReader加载

auto node = cocostudio::timeline::NodeReader::getInstance()->createNode("test.ExportJson");

 第二种:使用GUIReader加载

GUIReader::getInstance()->widgetFromJsonFile("test.ExportJson");

由于本人也是初学Cocos2d-x 3.2版本,所以这就不解释这两种加载方式的返回值及用法了。我们只针对CocosStudio在不同平台下生成的文件读取问题来探讨。

经过我的测试发现:

 windows 下的CocosStudio 生成的文件,需要使用GUIReader加载,如果使用NodeReader加载则会报错。

Mac 平台下的CocosStudio 生成的文件,则需要使用NodeReader加载,反之也会报错。

原因是虽然Mac版本和CocosStudio版本同时存在,但是由于Mac版本为1.0.0,导出的文件是有根节点Node的。而windows版本导出的实际上是个Panel。所以需要两种不同的读取方法。

在被这个问题困扰了长达6个小时之后终于搞清楚了。。。。

Cocos2d-x的坑还要继续填,希望本文可以让其他同学少走弯路。

非常感谢您的阅读。

相关推荐