加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

【cocosStudio】查看官方示例--调用cocoStudio控件

发布时间:2020-12-14 19:48:17 所属栏目:百科 来源:网络整理
导读:理解: 将cocoStudio的ui控件转换成cocos的GUI控件来操作 通过widgetFromJsonFile()加载根容器Plane控件 通过 Helper::seekWidgetByTag()寻找子控件 打开官方示例: 打开 CMD CD 到D:cocos2d-x-3.3rc0tests cpp-tests 执行 cocos run -p win32 命令

理解:

  • 将cocoStudio的ui控件转换成cocos的GUI控件来操作
  • 通过widgetFromJsonFile()加载根容器Plane控件
  • 通过Helper::seekWidgetByTag()寻找子控件

打开官方示例:

  • 打开CMD
  • CD到D:cocos2d-x-3.3rc0testscpp-tests
  • 执行cocos run -p win32命令



将class下所有的文件全部放到Sublime Text 3中:

  • 查找文件CTRL+P:CocoStudio.h
  • 发现底下有个#include "cocostudio/CCSGUIReader.h"
  • 接着查找CCSGUIReader.h



导入头文件调用:(注意命名空间和强制类型转换类型)

  • 将Json文件中的控件,转换成cocos2dx里面的ui控件来操作
  • #include "cocostudioCocoStudio.h"
  • #include "uiUIButton.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;  
    }  

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读