Cocos2d-x
发布时间:2022-05-03 发布网站:大佬教程 code.js-code.com
大佬教程收集整理的这篇文章主要介绍了【cocosStudio】查看官方示例--调用cocoStudio控件,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
理解:
- 将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"
-
-
@H_616_191@ #defineJSON"DemoLogin.json"
- #defineBTN_TAG14
@H_616_191@ #defineEDIT_TEXt_name8
-
@H_616_191@
- USING_NS_Cc;
@H_616_191@ @H_696_233@using@H_696_233@namespacecocostudio;
- @H_696_233@namespaceui;
- namespacestd;
- Scene*HelloWorld::createScene()
- {
@H_616_191@ autoscene=Scene::create();
- autolayer=HelloWorld::create();
@H_616_191@ scene->addChild(layer);
- returnscene;
@H_616_191@ }
- boolHelloWorld::init()
- if(!Layer::init())
- return@H_696_233@false;
- }
- /*加载cocostudio界面*/
@H_616_191@ autouiScene=GUIReader::geTinstance()->widgetFromJsonFile(JSON);
- addChild(uiScenE);
- /*找到cocostudio的控件,装换成coocs的gui控件(Helper须加载CocosGUI.h)*/
- /*按钮*/
@H_616_191@ Button*btn=(Button*)(Helper::seekWidgetByTag(uiScene,BTN_TAG));
- /*设置按钮点击事件(注意转换类型的对应)*/
@H_616_191@ btn->addTouchEventListener(@H_696_233@this,toucheventSELEctor(HelloWorld::touchEvent));
- /*输入框(注意转换类型的对应,不是TextFieldTTF)*/
- editText=(TextField*)(Helper::seekWidgetByTag(uiScene,EDIT_TEXt_name));
- true;
- /*设置按钮点击事件*/
- voidHelloWorld::touchEvent(Ref*pSender,TouchEventTypetypE){
- switch(typE)
@H_616_191@ {
- caseTOUCH_EVENT_BEGAN:
@H_616_191@ CCLOG("Began");
- break;
- caseTOUCH_EVENT_MOVED:
- break;
- caseTOUCH_EVENT_ENDED:
- /*输出输入框的内容*/
@H_616_191@ CCLOG(editText->getString().c_str());
- caseTOUCH_EVENT_CANCELED:
- default:
- }
FROM:http://blog.csdn.net/ns2250225/article/details/41961219
给cocos中添加响应事件的例子:
#include "ui/CocosGUI.h"
//获取屏幕大小
Size visibleSize = Director::geTinstance()->getVisibleSize();
auto
widget = Widget::create();
widget->setContentSize(Size(100,100));
widget->setPosition(Vec2(visibleSize.width/2,visibleSize.height/2)
);
widget->setTouchEnabled(
true
);
widget->addTouchEventListener([](Ref *pSender,Widget::TouchEventType typ
E){
case
Widget::TouchEventType::BEGAN:
break
;
Widget::TouchEventType::MOVED:
;
Widget::TouchEventType::ENDED:
;
Widget::TouchEventType::CANCELED:
;
default
:
;
}
@H_348_
607@}
);