Cocos2dx之使用UI库结合cocostudio
使用cocostudio的UI编辑器编辑好UI界面,导出UI文件,直接在cocos2dx中使用。通过tag或者name来获取到UI控件
1、编辑ui界面,直接用模板然后拖几个控件过去
2、cocos2dx种载入这个编辑好的UI,必须先载入cocostudio库,详细操作參照:
http://blog.csdn.net/yangxuan0261/article/details/21651779
- //将编辑好的ui加入进去。是成员变量cocos2d::ui::Widget* layout;
- layout = cocostudio::GUIReader::getInstance()->widgetFromJsonFile("DemoLogin/DemoLogin.ExportJson");
- layout->setPosition(Point::ZERO);
- this->addChild(layout);
- count = 0;
- this->schedule(schedule_selector(HelloWorld::aaa), 1.0f);
- //获取ui里的button,并加入监听
- Button* btn = (Button*)layout->getChildByName("login_Button");
- btn->addTouchEventListener(this, toucheventselector(HelloWorld::buttonEvent));
- //获取ui里的滑动条,并加入监听
- Slider* sl = (Slider*)layout->getChildByName("Slider_70");
- sl->addEventListenerSlider(this, sliderpercentchangedselector(HelloWorld::sliderPercentChangeEvent));
- //获取ui里的滚动层
- ui::ScrollView* sv = (ui::ScrollView*)layout->getChildByName("ScrollView_73");
- sv->setBackGroundColor(cocos2d::Color3B::GREEN);
- sv->setTouchEnabled(true);
- sv->setInnerContainerSize(Size(250, 250));
- sv->scrollToPercentBothDirection(Point(50, 50), 1, true);
- sv->setBackGroundColorType(LAYOUT_COLOR_SOLID);
- //获取ui里的复选框,并加入监听
- CheckBox* cb = (CheckBox*)layout->getChildByName("agree_CheckBox");
- cb->setTouchEnabled(true);
- cb->addEventListenerCheckBox(this, checkboxselectedeventselector(HelloWorld::checkSelectEvent1));
- //获取ui里的文字输入,并加入监听
- TextField* tf = (TextField*)layout->getChildByName("name_TextField");
- tf->setTouchEnabled(true);
- tf->setMaxLengthEnabled(true);
- tf->setMaxLength(10);
- tf->setPasswordEnabled(true);
- tf->addEventListenerTextField(this, textfieldeventselector(HelloWorld::textFiledEvent));
对应控件的回调函数
- //定时器,用来显示运行进度条累加
- void HelloWorld::aaa(float delta)
- {
- count += 5;
- if (count <= 100)
- {
- LoadingBar* lb = (LoadingBar*)layout->getChildByName("LoadingBar_68");
- lb->setPercent(count);
- }
- }
- //图片button的回调函数
- void HelloWorld::buttonEvent(Ref* obj, TouchEventType eventType)
- {
- switch (eventType)
- {
- case TouchEventType::TOUCH_EVENT_BEGAN:
- CCLOG("begin");
- break;
- case TouchEventType::TOUCH_EVENT_MOVED:
- CCLOG("move");
- break;
- case TouchEventType::TOUCH_EVENT_ENDED:
- CCLOG("end");
- break;
- case TouchEventType::TOUCH_EVENT_CANCELED:
- CCLOG("cancel");
- break;
- default:
- break;
- }
- }
- //滑动条改变的回调函数
- void HelloWorld::sliderPercentChangeEvent(Ref*pSender, SliderEventType type)
- {
- if (type == SLIDER_PERCENTCHANGED)
- {
- Slider* pSlider = (Slider*)pSender;
- int percent = pSlider->getPercent();
- CCLOG("slider value=%d", percent);
- }
- }
- //勾选的换掉函数
- void HelloWorld::checkSelectEvent1(Ref *pSender, CheckBoxEventType eventtype)
- {
- //gui::UILabelAtlas * pLabelAtlas = dynamic_cast<UILabelAtlas *>(uiLayer->getWidgetByName("LabelAtlas_38"));
- LabelBMFont* lbm = (LabelBMFont*)layout->getChildByName("agree_LabelBMFont");
- switch (eventtype)
- {
- case CheckBoxEventType::CHECKBOX_STATE_EVENT_SELECTED:
- CCLOG("you select");
- /*const char* temp = { "you select" };
- lbm->setString(temp);*/
- break;
- case CheckBoxEventType::CHECKBOX_STATE_EVENT_UNSELECTED:
- CCLOG("you unselect");
- /* const char* temp2 = "you unselect";
- lbm->setString(temp2);*/
- break;
- default:
- break;
- }
- }
- void HelloWorld::textFiledEvent(cocos2d::Ref *pSender, cocos2d::ui::TextFiledEventType eventtype)
- {
- switch (eventtype)
- {
- case TextFiledEventType::TEXTFIELD_EVENT_ATTACH_WITH_IME:
- CCLOG("attach with_ime");
- break;
- case TextFiledEventType::TEXTFIELD_EVENT_INSERT_TEXT:
- CCLOG("insert text");
- break;
- case TextFiledEventType::TEXTFIELD_EVENT_DETACH_WITH_IME:
- CCLOG("detach with_ime");
- break;
- case TextFiledEventType::TEXTFIELD_EVENT_DELETE_BACKWARD:
- CCLOG("delete backward");
- break;
- default:
- break;
- }
- }
- void HelloWorld::pageViewEvent(Ref *pSender, PageViewEventType eventtype)
- {
- switch (eventtype)
- {
- case PageViewEventType::PAGEVIEW_EVENT_TURNING:
- CCLOG("turning");
- break;
- }
- }
3、执行效果
Cocos2dx之使用UI库结合cocostudio的更多相关文章
- `cocos2dx 非完整` UI解析模块
昨天在cocos2dx的一个群里,遇到一位匿名为x的朋友询问的问题,是关于ui的.他使用c++写了不少的ui封装节点,用来实现游戏中的各种不同效果.然后现在想改用lua,于是尝试使用最小代价去复用自己 ...
- Webix JavaScript UI 库可以帮你构建跨平台的HTML5 和 CSS3 程序
XB 软件公司最近发布了JavaScript UI 库Webix ,其中包含的组件超过45个,用这些组件可以构建跟HTML5 和 CSS3 兼容的程序,这些程序不仅能在个人电脑上运行,还能用在iOS. ...
- GUI - GEB UI库
最近基于Winform开发了几款产品,感觉Winform有很大的局限性,其最主要的一点在于:控件是基于Windows窗体的,这就导致每个控件都是重量级控件,对复杂的界面来说,其性能和表现力都欠佳.在实 ...
- Riot - 比 Facebook React 更轻量的 UI 库
Riot 是一个类似 Facebook React 的用户界面库,只有3.5KB,非常轻量.支持IE8+浏览器的自定义标签,虚拟 DOM,语法简洁.Riot 给前端开发人员提供了除 React 和 P ...
- AloneJs —— 简洁高效的JavaScript UI库
以前做项目时用了一些第三方的JS UI库,项目比较low的时候用还行,一旦项目要求比较高,特别是交互比较复杂时,某些第三方UI库就显得无能为力,用起来也不顺手,改也不好改,所以我就自己基于jQuery ...
- 移动端前端UI库—Frozen UI、WeUI、SUI Mobile
[MUI]http://www.dcloud.io/ [Clouda]http://clouda.baidu.com/blend2是百度历时两年共同研发的开源App技术框架,基于Node.js,简单易 ...
- 免费的Android UI库及组件推荐
短短数年时间Android平台就已经形成了一个庞大而活跃的开发者社区.许多社区开发的项目业已进入成熟阶段,甚至可以用于商业的软件生产中,且不用担心质量问题. 本文编译自androiduipattern ...
- 移动端前端框架UI库(Frozen UI、WeUI、SUI Mobile)
Frozen UI 自述:简单易用,轻量快捷,为移动端服务的前端框架. 主页:http://frozenui.github.io/ 开发团队:QQVIP FD Team Github:https:// ...
- 推荐:移动端前端UI库—Frozen UI、WeUI、SUI Mobile
Frozen UI 自述:简单易用,轻量快捷,为移动端服务的前端框架. 主页:http://frozenui.github.io/ 开发团队:QQVIP FD Team Github:https:// ...
随机推荐
- 查找python项目依赖并生成requirements.txt——pipreqs 真是很好用啊
查找python项目依赖并生成requirements.txt 转自:http://blog.csdn.net/orangleliu/article/details/60958525 一起开发项目的时 ...
- C++ 共用体 枚举类型 所有
一.共用体类型 1.共用体的概念. 有时候需要将几种不同类型的变量存放到同一段内存单元中.例如有三个变量,他们的字节数不同,但是都从同一个地址开始存放.也就是用了覆盖技术,几个变量互相覆盖.这种使几个 ...
- anaconda 使用 及 tensorflow-gpu 安装
Anaconda简易使用 创建新环境 conda create -n rcnn python=3.6 删除环境 conda remove -n rcnn --all 进入环境 conda activa ...
- oracle11g安装与拆卸
Oracle 11g安装 1.解压下载的包,然后进入包内,点击setup.exe开始安装 . 2.出现如下:一般把那个小对勾取消,点击下一步进行, 弹出下图这个后点'是' 3.下图后,选择创建和配置数 ...
- Git Learning Part I - Install Git and configure it
Why we need 'Git' GIt version control: 1. record the history about updating code and deleting code 2 ...
- java exception 异常错误记录
//异常:Could not obtain transaction-synchronized Session for current thread 做定时器的时候用ApplicationContext ...
- 【Arduino】基于arduino的激光坦克
历经了总共40来个小时,终于将这个激光坦克做好了. 这是本人的第一件像样的arduino作品. 用arduino为主控制器,配有32路舵机驱动板(在这有些大材小用了),以及一个wr703n的路由器当做 ...
- [ Java ] String 轉型 ArrayList
Lambda 對我而言一很像天書 這個行 Java code 讓我開始有點些微有 Lambda 感覺 https://stackoverflow.com/questions/10706721/conv ...
- js代码 注释 test
<script type="text/javascript"> var obj = { tyep: 'GET', url: '/Backstage/Home/Menu' ...
- jsoup解析页面
package com.java.jsoup; /** * jsoup解析网页 * @author nidegui * @version 2019年4月29日 下午5:12:02 * */ impor ...
