Cocos2d-x 3.2 与 Cocos studio 之间不得不说的神坑
很久没写博客了,最近项目需要用到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的坑还要继续填,希望本文可以让其他同学少走弯路。
非常感谢您的阅读。
相关推荐
进入场景而且过渡动画结束时候触发。提示 GameScene场景中的继承于节点,这些生命周期事件根本上是从Node继承而来。事实上所有Node对象都有这些事件,具体实现代码与GameScene场景类似。