理解:
- 将cocoStudio的ui控件转换成cocos的GUI控件来操作
- 通过widgetFromJsonFile()加载根容器Plane控件
- 通过Helper::seekWidgetByTag()寻找子控件
打开官方示例:
- 打开CMD
- CD到D:\cocos2d-x-3.3rc0\tests\cpp-tests\
- 执行cocos run -p win32命令
将class下所有的文件全部放到Sublime Text 3中:
- 查找文件CTRL+P:CocoStudio.h
- 发现底下有个:#include "cocostudio/CCSGUIReader.h"
- 接着查找:CCSGUIReader.h
导入头文件调用:(注意命名空间和强制类型转换类型)
- 将Json文件中的控件,转换成cocos2dx里面的ui控件来操作
- #include "cocostudio\CocoStudio.h"
- #include "ui\UIButton.h"
- using namespace cocostudio;
- using namespace ui;
注意类型转换的类型必须一一对应,比如TextField就是TextField,不能转换为TextFieldTTF:
#include "HelloWorldScene.h"
/* cocoStudio导出的Json文件 */
#define JSON "DemoLogin.json"
#define BTN_TAG 14
#define EDIT_TEXT_NAME 8
/* 设置命名空间 */
USING_NS_CC;
using namespace cocostudio;
using namespace ui;
using namespace std;
Scene* HelloWorld::createScene()
{
auto scene = Scene::create();
auto layer = HelloWorld::create();
scene->addChild(layer);
return scene;
}
bool HelloWorld::init()
{
if ( !Layer::init() )
{
return false;
}
/* 加载cocoStudio界面 */
auto uiScene = GUIReader::getInstance()->widgetFromJsonFile(JSON);
addChild(uiScene);
/* 找到cocoStudio的控件,装换成coocs的gui控件(Helper须加载CocosGUI.h) */
/* 按钮 */
Button *btn = (Button*)(Helper::seekWidgetByTag(uiScene,BTN_TAG));
/* 设置按钮点击事件(注意转换类型的对应) */
btn->addTouchEventListener( this, toucheventselector(HelloWorld::touchEvent));
/* 输入框(注意转换类型的对应,不是TextFieldTTF) */
editText = (TextField*)(Helper::seekWidgetByTag(uiScene,EDIT_TEXT_NAME));
return true;
}
/* 设置按钮点击事件 */
void HelloWorld::touchEvent(Ref *pSender, TouchEventType type){
switch (type)
{
case TOUCH_EVENT_BEGAN:
CCLOG( "Began" );
break;
case TOUCH_EVENT_MOVED:
break;
case TOUCH_EVENT_ENDED:
/* 输出输入框的内容 */
CCLOG( editText->getString().c_str() );
break;
case TOUCH_EVENT_CANCELED:
break;
default:
break;
}
}