1、cocos2d-x加载cocostudio一定要用对应的版本,不然很是麻烦
1)、先说说coco2d-x3.0和cocostudio1.3.0.1UI
2)、先用cocostudio导出工程,这个没什么太多可说,美术的事情,不过要注意像button那样的,要选中交互。
3)、将导出的资源放入cocos2d-x资源目录中
4)、由于cocos2d-x3.0工作目录是放在其它地方,所以要引用一些库
libCocoStuido、libGUI和libExtension三个库
5)、他们存在路径不同分别在
cocos/editor-support/cocostudio/proj.win32/libCocoStuido
、cocos2d\cocos2d-x-3.0\cocos\ui\proj.win32
、
cocos2d\cocos2d-x-3.0\extensions\proj.win32
6)、添加库方法:在“解决方案资源管理器”中找到整个解决方案,右击,选择“添加”->“现有项目”。在弹出的对话框中找到“项目目录/cocos2d/cocos/editor-
support/cocostudio/proj.win32/libCocoStuido”点击确定,即可加入到解决方案中
7)、找到我们的目标项目“Test”右击,选择“引用...”。在弹出的属性页中点选下面的“添加新引用”。在弹出的子级对话框中选择我们需要的库,点击确
定,即可添加项目对库的引用。
8)、添加包含目录:
右击项目->属性->配置属性->c/c++->常规->加入包含目录“$(EngineRoot)cocos\editor-support”和“$(EngineRoot)cocos”。
9)、引入头文件 #include
"cocostudio/CocoStudio.h"
10)、代码:
auto uiLayer =
cocostudio::GUIReader::getInstance()->widgetFromJsonFile("DemoLogin/DemoLogin.json");
addChild(uiLayer);
11)、设置button按钮监听
引用UIWidget添加命名空间uUSING_NS_CC; sing namespace ui;
12)、代码
uiLayer->getChildByName("login_Button")->addTouchEventListener(this,
toucheventselector(HelloWorld::touchCallBack));
void
HelloWorld::touchCallBack(Object* obj,TouchEventType type)
2、再说说cocos2d-x3.0加载cocostudio1.3.0.1的场景
1)、头文件和链接库如上所示,如果已经加载那就不用再加载了
2)、用cocostudio生成场景文件,拷贝到cocos2d-x资源目录下,注意不要把这些文件自己建立的次目录下
3)、加载整个文件到场景中使用 cocostudio::SceneReader
auto node =
cocostudio::SceneReader::getInstance()->createNodeWithSceneFile("publish/FightScene.json");
addChild(node);
4)、播放动画
auto child =
node->getChildByTag(10005);
auto pLoadRender =
(cocostudio::ComRender*)(child->getComponent("CCArmature"));
auto pArmature =
(cocostudio::CCArmature*)(pLoadRender->getNode());
pArmature->getAnimation()->playByIndex(1);
5)、获取场景文件中的精灵
auto pLoadRender1 =
(cocostudio::ComRender*)(node->getChildByTag(10011)->getComponent("CCSprite"));
Sprite *ssss =
(Sprite*)(pLoadRender1->getNode());
6)、场景中的节点,可以通过getchind...方式一层层获取。
node->getChildByTag(10007)->getChildByTag(10010)->getComponent("CCSprite")
3、再说一下到Android平台移植问题
1、android 还需在jni/android.mk下重添加引用库cocostudio
2、添加LOCAL_WHOLE_STATIC_LIBRARIES
+= cocostudio_static和$(call import-module,editor-support/cocostudio)
以下是老版本
1、首先用cocostudio导出工程(在此说明一下,cocostudio1.2.0.1导出的UI能在cocos2d-x2.2中使用,但是不能在cocos2d-x2.2.3中使用,cocostudio1.2.0.1导出的骨骼动画能在cocos2d-x2.2.3中使用但是不能在cocos2d-x2.2中使用,你说操蛋不,所以使用cocostudio1.2.0.1建议用cocos2d-x2.2.2)
2、UILayer与UIWidget :
UILayer
继承cocos2d-x的CCLayer,UILayer可以通过addWidget添加UIWidget。下面该熟悉了吧
3、 UIWidget* view =
CCUIHELPER->createWidgetFromJsonFile("qq/NewProject_1.json"); UILayer *ui =
UILayer::create(); ui->addWidget(view);
UITextButton *button =
dynamic_cast<UITextButton*>(ui->getWidgetByName("Button_28")); //根据名称获取button
button->addTouchEventListener(this,SEL_TouchEvent(&HelloWorld::menuCallback));
//下面是cocos2d-x2.2的写法
//button->addReleaseEvent(this,coco_releaseselector(LoginScene::tryGame));
//添加时间回调监听
this->addChild(ui);
4、void HelloWorld::menuCallback(CCObject* pSender,TouchEventType
type){}