cocos2d-x 3.0学习一:cocostudio导出UI界面文件的加载及使用的若干问题
2014-10-09 11:18
591 查看
cocos2d-x版本:3.x
cocostudio版本:1.6
说一些抱怨的话,cocos2d-x自3.0以后发生的变化可以用翻天覆地来形容都不为过,不但类名与2.x版本的不一样(不仅仅只是体现在去掉2.x版本的类名开头CC),一些类名甚至可以说全改了,对资源的解析也采取了不一样的方式,而网络上的技术贴很多都是2.x版本的,一旦出现问题,官网上的指导有时候都不管用,真是头大,坑特多,不知道为啥需要这么大的变化的,边学边记,碰到问题解决了就赶紧记下来吧,不然以后又被坑了。
闲话不说,开始正题!
第一点,cocostudio到处的UI文件的加载解析问题。
cocos2d-x的英文官网我没有去看,只是看了中文官网的指导,原来想着ui界面的加载,那按照官网指导肯定是最权威,可是,就这样被坑了一下。
以下的内容是官方的指导:
将导出后的项目放到资源文件件中。(假设画布名称为“UIEditorTest_1”)
乍一看,TouchGroup的类名风格像是3.x的,心中窃喜,心想这下不坑了(确实被混乱的版本整怕了,我还是小白,囧),继续,咱将导出后的文件放入资源文件夹,然后敲代码,TouchGroup *,不对,头文件,命名空间是什么?赶紧api文档打开,搜索TouchGroup,顿时傻眼...
木有TouchGroup这个类有木有啊!
只有Touch类啊有木有啊!
Touch类不是我们要的有木有啊!!
说多了都是泪啊有木有啊!!!
好吧,没办法了,谁让咱要用人家呢,谁让别人家都是大爷呢!百度打开,Google打开(额,谷歌被墙了,没法用了,555...),只能百度了,TouchGroup不能用了,那用啥呢,有说Helper类,有说UILayer的(UILayer还是2.x时代的好不好撒,呜呜...),各种混乱,最后还是在官网论坛上找到了一点指导,说多了还是泪啊...
以下是解决的方法:
当时我的UI界面里头做了个头像跟血条,一说到血条,顺带说一个糗事,血条当时看到有本书上说可以用slider来做,然后我很自然的就:
然后就糗了,程序崩溃,后来打开Json文件看了下类名(忽然想出来的一招),哟,这玩意不是Slider,而是LoadingBar,好,这下解决了:
又过了一关,好累!
然后呢,UI界面里头添加了几个文本框用来显示信息,嘿嘿,这下劳纸会了,打开Json文件,嘿嘿,类名是Label,这下被我抓到了,然后:
然后编译运行,又华丽丽的报错有木有,又被坑了有木有?
一通百度,在某个旮旯角落里发现了,cocos2d-x自3.x以后,把对UI界面的文本框Label解析,交给了Text类负责,Text类是啥,好强大的,有靠山的,不知道的可以百度下...
好吧,改成Text类,终于解决了!
感言:为了导入cocostudio做出来的UI,新手小白博主做了无数奋力的尝试,倍觉艰辛,但最终还是完成了,涉及到版本的变更问题真是麻烦,实在期望后续的cocos2d-x版本不要再做这种改动了,因为api文档的说明也很简陋,真的蛮难的,可能还没找对方向吧,收拾收拾,继续上路,话说,我目前的想法是做一款RPG横版的小游戏出来,一切的东西都是为了这个目标而做的,且做且学吧~~
cocostudio版本:1.6
说一些抱怨的话,cocos2d-x自3.0以后发生的变化可以用翻天覆地来形容都不为过,不但类名与2.x版本的不一样(不仅仅只是体现在去掉2.x版本的类名开头CC),一些类名甚至可以说全改了,对资源的解析也采取了不一样的方式,而网络上的技术贴很多都是2.x版本的,一旦出现问题,官网上的指导有时候都不管用,真是头大,坑特多,不知道为啥需要这么大的变化的,边学边记,碰到问题解决了就赶紧记下来吧,不然以后又被坑了。
闲话不说,开始正题!
第一点,cocostudio到处的UI文件的加载解析问题。
cocos2d-x的英文官网我没有去看,只是看了中文官网的指导,原来想着ui界面的加载,那按照官网指导肯定是最权威,可是,就这样被坑了一下。
以下的内容是官方的指导:
将导出后的项目放到资源文件件中。(假设画布名称为“UIEditorTest_1”)
//根据文件创建一个界面 TouchGroup* ul =TouchGroup::create(); ul->addWidget(GUIReader::shareReader()->widgetFromJsonFile("UIEditorTest_1.json"));
//根据tag获取一个控件 ul->getChildByTag(1); //播放UI动画 AnimationManager::shareManager()->getAnimationByName("DemoHead_UI.json","Animation0")->play();
乍一看,TouchGroup的类名风格像是3.x的,心中窃喜,心想这下不坑了(确实被混乱的版本整怕了,我还是小白,囧),继续,咱将导出后的文件放入资源文件夹,然后敲代码,TouchGroup *,不对,头文件,命名空间是什么?赶紧api文档打开,搜索TouchGroup,顿时傻眼...
木有TouchGroup这个类有木有啊!
只有Touch类啊有木有啊!
Touch类不是我们要的有木有啊!!
说多了都是泪啊有木有啊!!!
好吧,没办法了,谁让咱要用人家呢,谁让别人家都是大爷呢!百度打开,Google打开(额,谷歌被墙了,没法用了,555...),只能百度了,TouchGroup不能用了,那用啥呢,有说Helper类,有说UILayer的(UILayer还是2.x时代的好不好撒,呜呜...),各种混乱,最后还是在官网论坛上找到了一点指导,说多了还是泪啊...
以下是解决的方法:
Node *pNode = GUIReader::getInstance()->widgetFromJsonFile("test.ExportJson"); this->addChild(pNode);好吧,能导入了,GUIReader全名是这样的cocostudio:GUIReader,命名空间,头文件不要少,引入....然后,要拿子控件了...我又忍不住要去擦一把眼泪的...
当时我的UI界面里头做了个头像跟血条,一说到血条,顺带说一个糗事,血条当时看到有本书上说可以用slider来做,然后我很自然的就:
Slider *hpbar= (Slider *)(Helper::seekWidgetByName(pNode, "hpbar")); hpbar->setPercent(90);
然后就糗了,程序崩溃,后来打开Json文件看了下类名(忽然想出来的一招),哟,这玩意不是Slider,而是LoadingBar,好,这下解决了:
LoadingBar *hpbar= (LoadingBar*)(Helper::seekWidgetByName(pNode, "hpbar")); hpbar->setPercent(90);
又过了一关,好累!
然后呢,UI界面里头添加了几个文本框用来显示信息,嘿嘿,这下劳纸会了,打开Json文件,嘿嘿,类名是Label,这下被我抓到了,然后:
Label *level= (Label*)(Helper::seekWidgetByName(pNode, "level")); level->setString("猪猪猪");
然后编译运行,又华丽丽的报错有木有,又被坑了有木有?
一通百度,在某个旮旯角落里发现了,cocos2d-x自3.x以后,把对UI界面的文本框Label解析,交给了Text类负责,Text类是啥,好强大的,有靠山的,不知道的可以百度下...
好吧,改成Text类,终于解决了!
感言:为了导入cocostudio做出来的UI,新手小白博主做了无数奋力的尝试,倍觉艰辛,但最终还是完成了,涉及到版本的变更问题真是麻烦,实在期望后续的cocos2d-x版本不要再做这种改动了,因为api文档的说明也很简陋,真的蛮难的,可能还没找对方向吧,收拾收拾,继续上路,话说,我目前的想法是做一款RPG横版的小游戏出来,一切的东西都是为了这个目标而做的,且做且学吧~~
相关文章推荐
- Cocos2d-x 3.0 开发(十六)cocos2dx-3.0beta版建立新项目并加载CocoStudio导出文件
- Cocos2d-x 3.0 开发(十六)cocos2dx-3.0beta版建立新项目并加载CocoStudio导出文件
- 实习小白::(转) Cocos2d-x 3.0 开发(十六)cocos2dx-3.0beta版建立新项目并加载CocoStudio导出文件
- Cocos2d-x加载CocoStudio导出文件的配置
- Cocos2d-x 3.10 学习记录之使用Cocostuio并加载Csb文件
- 实习小白::(转) Cocos2d-x 3.0开发(五)关联程序逻辑与cocoStudio导出文件
- 【学习点滴-php】使用phpExcel类导出excel文件相关问题总结
- Cocos2d-x 3.0开发(五)关联程序逻辑与cocoStudio导出文件
- 使用FFMPEG导出码流到AVI/MP4文件的若干问题
- Android使用webview加载网页,解决上传文件适配3.0、4.0、5.0手机存在的问题。
- CocoStudio使用笔记1:cocos2dx3.4加载CocoStudio导出的csb文件
- [寒江孤叶丶的Cocos2d-x之旅_27]CocoStudio导出的LUA文件怎么使用?
- cocos2d-x 3.0游戏实例学习笔记《卡牌塔防》第四步---编辑器(3)--坐标保存&加载文件操作
- Cocos2d-x 3.0开发(五)关联程序逻辑与cocoStudio导出文件
- Cocos2d-x 3.0 开发(十二)在CocoStudio中使用粒子挂载与曲线动画
- 使用Oracle中fileopen命令加载文件时遇到的怪问题
- cocos2d-x 学习日志(2)之使用UIWebView加载网页
- Cocos2d-x 3.0 开发(四)使用CocoStudio创建UI并载入到程序中
- Cocos2d-x 3.0 开发(十)使用CocoStudio场景编辑器关联组件
- 每日学习心得:Linq解决DataTable按照某一列的值排序问题/DataTable 导出CSV文件/巧用text-overflow解决数据绑定列数据展示过长问题