Cocos2d-x 3.x开发——导入Cocostudio资源
来源:互联网 发布:查询淘宝词的热度 编辑:程序博客网 时间:2024/05/18 00:40
目前正在和实训的小组成员一起做一款手机2D游戏,我们采用了Cocos2d-x进行开发。之前虽然早有耳闻,这次却是第一次认真地学习和使用Cocos2d-x。最开始的几天就是在不停的看文档和爬坑。其中一个坑就是Cocostudio这货。官网的文档滞后而且不够详细,为了弄清楚,借鉴了很多博客,也阅读了示例代码。
本人Cocos2d-x的版本是3.1,Cocostudio的版本是1.5.
Cocostudio目前的功能包括UI编辑器、动画编辑器、场景编辑器和数据编辑器。数据编辑器没有涉及到,就不说了。剩下三者中主要讲下导入UI编辑器的资源。
UI编辑器导出的文件包括一个.ExportJson
文件,一个.plist
文件和一个.png
文件。Cocostudio中文官网中说的是TouchGroup
,英文官网中是UILayer
,可是都已经不存在了。UILayer
变成了Layer
,现在也可以不创建Layer
,直接加到场景上面。所以代码可以这样:
Node *pNode = GUIReader::getInstance()->widgetFromJsonFile("test.ExportJson");this->addChild(pNode);
下面就可以用getChildByTag
来获取组件了。不过getChildByTag
貌似只能按照树的结构一层层照下来,显得很麻烦,而且不能按照名字来取。所以,现在可以用ui
中的Helper
直接从树中获取组件,用name或者tag。但seekWidgetByTag
和seekWidgetByName
的第一个参数是Widget类型,需要将pNode
转成Widget
类型。(从.ExportJson
文件可以看出来,pNode
本来就是一个Widget
类型的树)
Button *button = (Button*)(ui::Helper::seekWidgetByName(pNode, "button"));
顺便附上绑定事件监听的代码,使看到的人免去寻找之苦。
button->addTouchEventListener(CC_CALLBACK_2(MainScene::touchEvent, this));
touchEvent
是自己写的方法。这个方法大致是如下用法,注意pSender
和type
的使用。
void SingleMenuScene::selectEvent(Ref *pSender, Widget::TouchEventType type){ switch(type) { case Widget::TouchEventType::ENDED: GameSetting::Map map = GameSetting::Map::DEFAULT; if(pSender == defaultBtn) { map = GameSetting::Map::DEFAULT; } else if(pSender == snowBtn) { map = GameSetting::Map::SNOW; } Scene *game = BattleScene::createScene(map); TransitionScene *transition = TransitionFade::create(0.5, game); Director::getInstance()->replaceScene(transition); }}
导入动画编辑器的动画的代码如下:
CCArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfo("Animation0.png","Animation0.plist","Animation.ExportJson");CCArmature *armature = CCArmature::create("Animation");armature->getAnimation()->playByIndex(0);armature->setScale(0.5f);armature->setPosition(ccp(visibleSize.width * 0.5, visibleSize.height * 0.5));this->addChild(armature);
导入场景编辑器的场景的代码如下:
Node* pNode = SceneReader::getInstance()->createNodeWithSceneFile("scene.ExportJson");this->addChild(pNode);
这个读出的Node
貌似不能转成Widget
,因为它不仅包括UI组件还有动画等资源。获取组件和绑定事件监听可以这样写:
ComRender *render = (ComRender*)(pNode->getChildByTag(10010)->getComponent("GUIComponent"));Widget *widget = (Widget*)(render->getNode());widget->addTouchEventListener(CC_CALLBACK_2(MainScene::touchEvent, this));
- Cocos2d-x 3.x开发——导入Cocostudio资源
- Cocos2d-x 3.x开发——导入Cocostudio资源
- Cocos2d-x 3.x开发——导入Cocostudio资源
- Cocos2d-x 3.x开发——导入Cocostudio资源
- (5) Cocos2d-x 3.x开发——导入Cocostudio资源
- Cocos2d-x 3.x开发 -- 导入Cocos Studio资源
- (入门篇)cocos2d-x导入cocostudio文件
- 在vs2012 cocos2d-x 3.2项目中导入CocoStudio库
- 在vs2012 cocos2d-x 3.2项目中导入CocoStudio库
- cocos2d-x & CocoStudio UI使用
- cocos2d-x 2.2使用 cocostudio
- cocos2d-x 2.2.5 cocostudio
- cocos2d-x & cocostudio bug记录
- cocos2d-x 3.0 开发之引用cocostudio等第三方库
- CocoStudio ------ 基于Cocos2d-X的移动游戏开发工具集合
- cocos2d-x CocoStudio工具集发布
- cocos2d-x CocoStudio工具集发布
- cocos2d-x 3.0alpha1+ cocostudio工程搭建
- 表单美化-原生javascript和jQuery多选按钮(兼容IE6)
- android c++ 调用java 提示“xxx class 找不到”的处理方法
- iOS开发之Objective-c的MD5/SHA1加密算法的实现
- JDBC接口规范
- Axis2创建WebService实例
- Cocos2d-x 3.x开发——导入Cocostudio资源
- html表格中的tr td th用法
- Climbing Stairs
- shiro安全框架扩展教程--上传文件的安全控制
- C# 写程序日志 log文件
- Android BroadCast
- innobackupex: Error: Original data directory '.' is not empty
- HDU5074 ACM-ICPC亚洲区域赛鞍山赛区现场赛E题 Hatsune Miku 二维DP
- 2014——我的求职之路(三)