Cocos2d-x v3.1 GUI系统--环境构建(七)

在使用Cocos2d-x的GUI系统时,由于生成的工程默认是没有将GUI系统所需的库导入到项目的,所以我们必须把库导入到工程中并对工程做一些配置才能够使用GUI系统。这篇文章我们先在配置Windows上的环境,并对GUI系统中的组织结构进行一个介绍,然后我们会写一个简单的Demo来测试我们配置的环境,最后我们配置Android环境,同样的也是通过此Demo进行测试。

Windows平台环境配置

在工程目录下,我们先找到所依赖的库。GUI系统主要依赖于“libGUI”库,“libGUI”库又依赖“libCocosStudio”库,然而“libCocosStudio”库又依赖“libExtensions”库,所以我们必须将这三个库都导入。在项目目录下,这里我们用ProjectPath来代表项目目录,本机的目录是:“D:\CocosProject\Cocos\Tutorial”。“libGUI”放在“ProjectPath\cocos2d\cocos\ui”目录下,“libCocosStudio”库放在“ProjectPath\cocos2d\cocos\editor-support\cocostudio”在这个目录下,“libExtensions”库存放在“ProjectPath\cocos2d\extensions”目录中,在上面的3个目录下面都有一个子目录“proj.win32”,我们所需要的VS工程文件就在其中。导入到解决方案,如下图:

将这些项目导入解决方案后,我们需要配置“Tutorial”工程的附加包含目录,并配置“Tutorial”工程的导入库,就是上面的那三个库。如下图所示:

     

GUI系统的组织结构

从上面的类图结构来开,所有的GUI对象都是集成至Node的,所以它们也具有Node的特性。详细的信息会在以后的文章中介绍,下面我们就来看一个简单的Demo。

PS:图片太大双击可显示原始大小。

测试Demo

1.为了方便我们就直接在“HelloWorldScene.cpp”文件中的“init”函数中添加如下代码:

  1:  m_pTestText  = Text::create("test gui", "Arial", 20);
  2:  m_pTestText->setPosition(Vec2(visibleSize.width*0.5f, visibleSize.height*0.7f));
  3:  addChild(m_pTestText);
  4:  auto button = Button::create("btn-play-normal.png", "btn-play-selected.png");    
  5:  button->setPosition(Vec2(visibleSize.width*0.5f, visibleSize.height*0.6f));
  6:  button->addTouchEventListener(this, toucheventselector(HelloWorld::OnTouchButton));
  7:  addChild(button);

2.在“HelloWorldScene.cpp”文件中添加GUI系统的头“CocosGUI.h”,并引入名称空间“ui”,代码如下:

  1: #include "CocosGUI.h"
  2: 
  3: using namespace cocos2d::ui;

3.在HelloWorldScene中添加一个回调函数的声明以及定义一个成员变量,如下:

  1: void OnTouchButton(cocos2d::Ref* pObject, cocos2d::ui::TouchEventType eType);
  2:
  3: cocos2d::ui::Text*   m_pTestText;

4.然后在源文件中定义实现,由于在上面已经进行了绑定所以当点击按钮时就会调用这个函数,在这个函数中当点击按钮时就修改m_pTestText的显示文本,代码如下:

  1: if(m_pTestText != nullptr)
  2: {
  3:    m_pTestText->setText("Button is pushed!");
  4: }

效果图,如下:

Android平台环境配置

在Android平台的配置就很简单了,在“ProjectPath\proj.android\jni”目录下有一个Android.mk文件,我们只需要将第4,6,17和19行前面的“#”去掉就可以了。

  1: # LOCAL_WHOLE_STATIC_LIBRARIES += box2d_static
  2: # LOCAL_WHOLE_STATIC_LIBRARIES += cocosbuilder_static
  3: # LOCAL_WHOLE_STATIC_LIBRARIES += spine_static
  4: LOCAL_WHOLE_STATIC_LIBRARIES += cocostudio_static
  5: # LOCAL_WHOLE_STATIC_LIBRARIES += cocos_network_static
  6: LOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_static
  7:
  8:
  9: include $(BUILD_SHARED_LIBRARY)
 10:
 11: $(call import-module,.)
 12: $(call import-module,audio/android)
 13:
 14: # $(call import-module,Box2D)
 15: # $(call import-module,editor-support/cocosbuilder)
 16: # $(call import-module,editor-support/spine)
 17: $(call import-module,editor-support/cocostudio)
 18: # $(call import-module,network)
 19: $(call import-module,extensions)

Cocos2d-x v3.1 GUI系统--环境构建(七)的更多相关文章

  1. 图解Android - Android GUI 系统 (2) - 窗口管理 (View, Canvas, Window Manager)

    Android 的窗口管理系统 (View, Canvas, WindowManager) 在图解Android - Zygote 和 System Server 启动分析一 文里,我们已经知道And ...

  2. ESP32 Eclipse开发环境构建与问题总结

    搞了一个多星期的eclipse环境构建,终于成功了,在此记录下期间遇到的问题. 以下为遇到的几点问题的解决方法: 1.使用的版本为V3.1版本,版本时间为2018年09月07日,可以直接在以下路径下载 ...

  3. elementary os进入GUI桌面环境失败

    问题描述:电脑上安装了elementary os,重启后系统很顺利的到达了Login图形界面,在选定用户并键入正确的密码后,电脑黑屏了一至两秒钟后又回到的Login界面,一开始以为是密码输入错误了,就 ...

  4. Hyperledger Fabric 1.0 从零开始(三)——环境构建(内网/准离线)

    有公网环境的服务器可以直接看 Hyperledger Fabric 1.0 从零开始(二)--环境构建(公网) ,本篇内容与上篇相似,只不过环境搭建需要在内网下,也就是网络被限制的情况下. 1:环境构 ...

  5. Hyperledger Fabric 1.0 从零开始(二)——环境构建(公网)

    1:环境构建 在本文中用到的宿主机环境是Centos ,版本为Centos.x86_647.2,通过Docker 容器来运行Fabric的节点,版本为v1.0.因此,启动Fabric网络中的节点需要先 ...

  6. 嵌入式linux系统的构建

    前期工作:a.配置好tftp服务器:在嵌入式的童年中有介绍 b.开发板可以pc,linux 三者可以互相ping通 c.配置好nfs服务器:同样在嵌入式的童年中有介绍 一.嵌入式linux内核的制作( ...

  7. maven属性、profile、资源过滤、不同环境构建项目

    maven针对不同环境构建项目 maven使用属性.profile及资源过滤支持针对不同环境构建项目 maven属性 maven共有六类属性 1.最常见的是自定义属性,即在pom文件里通过<pr ...

  8. 在Ubuntu18.04中QT编程的环境构建(转)

    在Ubuntu18.04中QT编程的环境构建 原点分析 百家号06-2110:14 如果说QT大家觉得陌生的话,那么 Windows 早年推出的C++图形用户界面的应用程序开发框架MFC,应该是耳熟能 ...

  9. Maven系列第9篇:多环境构建支持,核心开发必备!

    maven系列目标:从入门开始开始掌握一个高级开发所需要的maven技能. 这是maven系列第9篇. 整个maven系列的内容前后是有依赖的,如果之前没有接触过maven,建议从第一篇看起,本文尾部 ...

随机推荐

  1. Python及R安装包版本查看方法

    R包查询 查询已安装的所有的包:library() 或installed.packages()(括号内为空,区别以上两项) 查询具体包的信息: help(package="pheatmap& ...

  2. 10、scala模式匹配

    一.模式匹配1 1.介绍 模式匹配是Scala中非常有特色,非常强大的一种功能.模式匹配,其实类似于Java中的swich case语法,即对一个值进行条件判断,然后针对不同的条件, 进行不同的处理. ...

  3. 哪个U盘启动工具能安装红帽系统,

    安装红帽子,不要使用windows系统下的PE启动盘,两者引导方式不一样,不通用的.正确的方法是网上下载红帽子的ISO镜像文件后,用UltraISO这个工具写入优盘或者光盘,得到的系统盘才可以启动电脑 ...

  4. Struts2学习第七课 result

    result 是action节点的子节点 result 代表action方法执行后,可能去的一个目的地 一个action节点可以配置多个result子节点. result的name属性值对应着acti ...

  5. 第一周作业-Linux基础入门

    写在前面 实验楼中linux基础入门的内容很多,几乎涵盖了所有的常用命令.命令的记忆不是一朝一夕的,更不能死记硬背,在实践中多操作,熟悉后自然就记住了.我没有将对每个命令操作结果都截图记录下来(事实上 ...

  6. LENOVO服务器批量升级BMC固件

    需求:通过服务器远程管理IP批量升级IMM.UEFI固件 工具:asu64.ipmitool.iflash64.cdc_interface.sh 下载:http://pan.baidu.com/s/1 ...

  7. 微信小程序-获取当前城市位置

    CSDN链接 https://blog.csdn.net/weixin_42262436/article/details/80458430

  8. vue打包之后生成一个配置文件修改请求接口

    问题描述: 在npm run build 生成dist后,url配置也被固定了,传到运行的前端服务器上后,假设某次,api服务器的ip修改了,改动只是更新下这个url,但是却需要回到前端源码,修改ur ...

  9. Python 生成个性二维码

    1.1 实验内容 本课程通过调用MyQR接口来实现生成个人所需二维码,并可以设置二维码的大小.是否在现有图片的基础上生成.是否生成动态二维码. 本课程主要面向Python3初学者. 1.2 知识点 P ...

  10. 老男孩Day1作业(一):编写登录接口

    需求:编写登陆接口1. 用户输入帐号密码进行登陆2. 用户信息保存在文件内3. 用户密码输入错误三次后锁定用户 1)编写思路 编写思路参考下面GitHub链接中的流程图 https://github. ...