使用cocostudio的UI编辑器编辑好UI界面,导出UI文件,直接在cocos2dx中使用。通过tag或者name来获取到UI控件

1、编辑ui界面,直接用模板然后拖几个控件过去



2、cocos2dx种载入这个编辑好的UI,必须先载入cocostudio库,详细操作參照:

http://blog.csdn.net/yangxuan0261/article/details/21651779

  1. //将编辑好的ui加入进去。是成员变量cocos2d::ui::Widget* layout;
  2. layout = cocostudio::GUIReader::getInstance()->widgetFromJsonFile("DemoLogin/DemoLogin.ExportJson");
  3. layout->setPosition(Point::ZERO);
  4. this->addChild(layout);
  5. count = 0;
  6. this->schedule(schedule_selector(HelloWorld::aaa), 1.0f);
  7. //获取ui里的button,并加入监听
  8. Button* btn = (Button*)layout->getChildByName("login_Button");
  9. btn->addTouchEventListener(this, toucheventselector(HelloWorld::buttonEvent));
  10. //获取ui里的滑动条,并加入监听
  11. Slider* sl = (Slider*)layout->getChildByName("Slider_70");
  12. sl->addEventListenerSlider(this, sliderpercentchangedselector(HelloWorld::sliderPercentChangeEvent));
  13. //获取ui里的滚动层
  14. ui::ScrollView* sv = (ui::ScrollView*)layout->getChildByName("ScrollView_73");
  15. sv->setBackGroundColor(cocos2d::Color3B::GREEN);
  16. sv->setTouchEnabled(true);
  17. sv->setInnerContainerSize(Size(250, 250));
  18. sv->scrollToPercentBothDirection(Point(50, 50), 1, true);
  19. sv->setBackGroundColorType(LAYOUT_COLOR_SOLID);
  20. //获取ui里的复选框,并加入监听
  21. CheckBox* cb = (CheckBox*)layout->getChildByName("agree_CheckBox");
  22. cb->setTouchEnabled(true);
  23. cb->addEventListenerCheckBox(this, checkboxselectedeventselector(HelloWorld::checkSelectEvent1));
  24. //获取ui里的文字输入,并加入监听
  25. TextField* tf = (TextField*)layout->getChildByName("name_TextField");
  26. tf->setTouchEnabled(true);
  27. tf->setMaxLengthEnabled(true);
  28. tf->setMaxLength(10);
  29. tf->setPasswordEnabled(true);
  30. tf->addEventListenerTextField(this, textfieldeventselector(HelloWorld::textFiledEvent));

对应控件的回调函数

  1. //定时器,用来显示运行进度条累加
  2. void HelloWorld::aaa(float delta)
  3. {
  4. count += 5;
  5. if (count <= 100)
  6. {
  7. LoadingBar* lb = (LoadingBar*)layout->getChildByName("LoadingBar_68");
  8. lb->setPercent(count);
  9. }
  10. }
  11. //图片button的回调函数
  12. void HelloWorld::buttonEvent(Ref* obj, TouchEventType eventType)
  13. {
  14. switch (eventType)
  15. {
  16. case TouchEventType::TOUCH_EVENT_BEGAN:
  17. CCLOG("begin");
  18. break;
  19. case TouchEventType::TOUCH_EVENT_MOVED:
  20. CCLOG("move");
  21. break;
  22. case TouchEventType::TOUCH_EVENT_ENDED:
  23. CCLOG("end");
  24. break;
  25. case TouchEventType::TOUCH_EVENT_CANCELED:
  26. CCLOG("cancel");
  27. break;
  28. default:
  29. break;
  30. }
  31. }
  32. //滑动条改变的回调函数
  33. void HelloWorld::sliderPercentChangeEvent(Ref*pSender, SliderEventType type)
  34. {
  35. if (type == SLIDER_PERCENTCHANGED)
  36. {
  37. Slider* pSlider = (Slider*)pSender;
  38. int percent = pSlider->getPercent();
  39. CCLOG("slider value=%d", percent);
  40. }
  41. }
  42. //勾选的换掉函数
  43. void HelloWorld::checkSelectEvent1(Ref *pSender, CheckBoxEventType eventtype)
  44. {
  45. //gui::UILabelAtlas * pLabelAtlas = dynamic_cast<UILabelAtlas *>(uiLayer->getWidgetByName("LabelAtlas_38"));
  46. LabelBMFont* lbm = (LabelBMFont*)layout->getChildByName("agree_LabelBMFont");
  47. switch (eventtype)
  48. {
  49. case CheckBoxEventType::CHECKBOX_STATE_EVENT_SELECTED:
  50. CCLOG("you select");
  51. /*const char* temp = { "you select" };
  52. lbm->setString(temp);*/
  53. break;
  54. case CheckBoxEventType::CHECKBOX_STATE_EVENT_UNSELECTED:
  55. CCLOG("you unselect");
  56. /*  const char* temp2 = "you unselect";
  57. lbm->setString(temp2);*/
  58. break;
  59. default:
  60. break;
  61. }
  62. }
  63. void HelloWorld::textFiledEvent(cocos2d::Ref *pSender, cocos2d::ui::TextFiledEventType eventtype)
  64. {
  65. switch (eventtype)
  66. {
  67. case TextFiledEventType::TEXTFIELD_EVENT_ATTACH_WITH_IME:
  68. CCLOG("attach with_ime");
  69. break;
  70. case TextFiledEventType::TEXTFIELD_EVENT_INSERT_TEXT:
  71. CCLOG("insert text");
  72. break;
  73. case TextFiledEventType::TEXTFIELD_EVENT_DETACH_WITH_IME:
  74. CCLOG("detach with_ime");
  75. break;
  76. case TextFiledEventType::TEXTFIELD_EVENT_DELETE_BACKWARD:
  77. CCLOG("delete backward");
  78. break;
  79. default:
  80. break;
  81. }
  82. }
  83. void HelloWorld::pageViewEvent(Ref *pSender, PageViewEventType eventtype)
  84. {
  85. switch (eventtype)
  86. {
  87. case PageViewEventType::PAGEVIEW_EVENT_TURNING:
  88. CCLOG("turning");
  89. break;
  90. }
  91. }

3、执行效果

Cocos2dx之使用UI库结合cocostudio的更多相关文章

  1. `cocos2dx 非完整` UI解析模块

    昨天在cocos2dx的一个群里,遇到一位匿名为x的朋友询问的问题,是关于ui的.他使用c++写了不少的ui封装节点,用来实现游戏中的各种不同效果.然后现在想改用lua,于是尝试使用最小代价去复用自己 ...

  2. Webix JavaScript UI 库可以帮你构建跨平台的HTML5 和 CSS3 程序

    XB 软件公司最近发布了JavaScript UI 库Webix ,其中包含的组件超过45个,用这些组件可以构建跟HTML5 和 CSS3 兼容的程序,这些程序不仅能在个人电脑上运行,还能用在iOS. ...

  3. GUI - GEB UI库

    最近基于Winform开发了几款产品,感觉Winform有很大的局限性,其最主要的一点在于:控件是基于Windows窗体的,这就导致每个控件都是重量级控件,对复杂的界面来说,其性能和表现力都欠佳.在实 ...

  4. Riot - 比 Facebook React 更轻量的 UI 库

    Riot 是一个类似 Facebook React 的用户界面库,只有3.5KB,非常轻量.支持IE8+浏览器的自定义标签,虚拟 DOM,语法简洁.Riot 给前端开发人员提供了除 React 和 P ...

  5. AloneJs —— 简洁高效的JavaScript UI库

    以前做项目时用了一些第三方的JS UI库,项目比较low的时候用还行,一旦项目要求比较高,特别是交互比较复杂时,某些第三方UI库就显得无能为力,用起来也不顺手,改也不好改,所以我就自己基于jQuery ...

  6. 移动端前端UI库—Frozen UI、WeUI、SUI Mobile

    [MUI]http://www.dcloud.io/ [Clouda]http://clouda.baidu.com/blend2是百度历时两年共同研发的开源App技术框架,基于Node.js,简单易 ...

  7. 免费的Android UI库及组件推荐

    短短数年时间Android平台就已经形成了一个庞大而活跃的开发者社区.许多社区开发的项目业已进入成熟阶段,甚至可以用于商业的软件生产中,且不用担心质量问题. 本文编译自androiduipattern ...

  8. 移动端前端框架UI库(Frozen UI、WeUI、SUI Mobile)

    Frozen UI 自述:简单易用,轻量快捷,为移动端服务的前端框架. 主页:http://frozenui.github.io/ 开发团队:QQVIP FD Team Github:https:// ...

  9. 推荐:移动端前端UI库—Frozen UI、WeUI、SUI Mobile

    Frozen UI 自述:简单易用,轻量快捷,为移动端服务的前端框架. 主页:http://frozenui.github.io/ 开发团队:QQVIP FD Team Github:https:// ...

随机推荐

  1. poj--3624--Charm Bracelet(动态规划 水题)

    Home Problem Status Contest Add Contest Statistic LOGOUT playboy307 UPDATE POJ - 3624 Charm Bracelet ...

  2. 自然语言处理(NLP)书籍资源清单

    1. 书籍 入门: <Speech and Language Processing>Dan Jurafsky ,James H. Martin 2. blog及项目

  3. LeetCode Weekly Contest 27

    1. 557. Reverse Words in a String III 分割字符串,翻转. class Solution { public: string reverseWords(string ...

  4. SQL server存储过程学习

    由于之前使用 Linq to Sql来操作数据库,对于数据库的存储过程.函数等比较薄弱.乘着自己闲着的时候,就百度自学了一点存储过程,以防以后要用. 基础通俗易懂的存储过程通过 存储过程学习 ,然后自 ...

  5. 【android】RxJava1原理解析

    在网络层,互联网提供所有应用程序都要使用的两种类型的服务,尽管目前理解这些服务的细节并不重要,但在所有TCP/IP概述中,都不能忽略他们: 无连接分组交付服务(Connectionless Packe ...

  6. hdu3488 / hdu3435 / hdu1853 最小费用最大流 圈 拆点

    题目大意: 在一个有向图中,求经过所有点的最小圈. 思路: (如果是用二分图的完美匹配来做,那么直接上模版就好了).http://www.cnblogs.com/Potato-lover/p/3991 ...

  7. RFID 知识的学习

    * 部分资料来自我们博士的PPT,部分来自网络和他人的论文. * 我们使用的教材是清华大学出版社出版的<智能卡技术(第四版)——IC卡.RFID标签与物联网(清华大学计算机系列教材)>(王 ...

  8. java servlet 3.0文件上传

    在以前,处理文件上传是一个很痛苦的事情,大都借助于开源的上传组件,诸如commons fileupload等.现在好了,很方便,便捷到比那些组件都方便至极.以前的HTML端上传表单不用改变什么,还是一 ...

  9. VS2015 & ReSharper CTRL

    如下为个人比较常用的快捷键,部分快捷键有进行修改. 一.VS偏好设置: 1.转到定义:F12 2.查找所有引用:Shift + F12 3.跳转到指定的某一行:Ctrl + G (or 单击状态栏中的 ...

  10. socket 的通信过程

    1.建立套接字 Linux在利用socket()系统调用建立新的套接字时,需要传递套接字的地址族标识符.套接字类型以及协议,其函数定义于net/socket.c中: asmlinkage long s ...