Cocos2dx杂记:cocos2dx 文本布局UI

【步兵 cocos2d-x】教你快速拼界面 【步兵 cocos2d-x】教你快速拼界面 by EOS. 可能实际开发中,一些繁琐的工作浪费了我们很多时间,其中之一恐怕就是对坐标。 下面我分享一下我的一些经验。 阅读详情

在开发游戏的过程中,UI布局是游戏必不可少的一部分。Cocos2dx游戏一般可以使用Cocostudio进行布局。简单的布局有时候可以采用文本方式。下面简单介绍下文本布局。
所谓的文本布局方式就是一个简单的Json文件,通过解析Json文件来进行调用。简单页面可以很快的实现,可以让代码和UI布局分离。

一、数据格式

解析的数据简单的分为:精灵“Sprite”,文本“Label”,菜单“Menu”等,可以根据需要进行自定义添加。
1、在“Sprite”中定义了基本的标签属性,如下所示

{
    "Sprite": [
        {
            "frameCache": false,
            "sprite": "chapter/chapter_btn_bg.png",
            "anchorPoint": "{0.5, 0.5}",
            "position": "{770, 680}",
            "localZorder": 0,
            "tag": "starBg",
            "attachedTag": "null"
        }
}

frameCache:是否使用缓存
sprite:图片名称,当使用缓存的时候注意不用写路径
anchorPoint:锚点
position:图片在层中的位置
localZorder:层级关系
tag: 图片标签
attachedTag: 关联的标签,即该节点的父类是哪个节点

2、在”Label”中定义了基本的标签属性,如下所示

{
    "Label": [
        {
            "labelSystemFont": "null",
            "labelBMFont": "null",
            "labelCharMap": "fonts/font_chapter_menu.png",
            "fontsize": 30,
            "fontWidth": 17,
            "fontHeight": 25,
            "startString": "/",
            "anchorPoint": "{0.5, 0.5}",
            "position": "{80, 17}",
            "localZorder": 0,
            "tag": "starNum",
            "attachedTag": "starBg"
        }
}

labelSystemFont: 系统文字名称
labelBMFont: fnt文字名称
labelCharMap: CharMap名称
fontsize: 文字大小(系统文字使用)
fontWidth: 文字宽度(CharMap使用)
fontHeight: 文字高度(CharMap使用)
startString: 开始字符(CharMap使用)
anchorPoint:锚点
position:图片在层中的位置
localZorder:层级关系
tag: 图片标签
attachedTag: 关联的标签,即该节点的父类是哪个节点

3、在”Menu”中定义了基本的标签属性,如下所示

{
    "Menu": [
        {
            "item1": "btn/addNormal.png",
            "item2": "btn/addPressed.png",
            "position": "{156, 17}",
            "localZorder": 0,
            "tag1": "itemImage1",
            "tag2": "itemMenu1",
            "attachedTag": "heartBg"
        }
}

item1: 按钮正常图片
item2: 按钮按下图片
position: 图片在层中的位置
localZorder: 层级关系
tag1: MenuItemImage标签
tag2: Menu标签
attachedTag: 关联的标签,即该节点的父类是哪个节点

4、如下是整个文本布局

{
    "Sprite": [
        {
            "frameCache": false,
            "sprite": "chapter/chapter_btn_bg.png",
            "anchorPoint": "{0.5, 0.5}",
            "position": "{770, 680}",
            "localZorder": 0,
            "tag": "starBg",
            "attachedTag": "null"
        },
        {
            "frameCache": false,
            "sprite": "chapter/chapter_btn_bg.png",
            "anchorPoint": "{0.5, 0.5}",
            "position": "{960, 680}",
            "localZorder": 0,
            "tag": "heartBg",
            "attachedTag": "null"
        },
        {
            "frameCache": false,
            "sprite": "chapter/chapter_btn_bg.png",
            "anchorPoint": "{0.5, 0.5}",
            "position": "{1170, 680}",
            "localZorder": 0,
            "tag": "diamondBg",
            "attachedTag": "null"
        },
        {
            "frameCache": false,
            "sprite": "chapter/star.png",
            "anchorPoint": "{0.5, 0.5}",
            "position": "{2, 15}",
            "localZorder": 0,
            "tag": "star",
            "attachedTag": "starBg"
        },
        {
            "frameCache": false,
            "sprite": "chapter/heart.png",
            "anchorPoint": "{0.5, 0.5}",
            "position": "{2, 15}",
            "localZorder": 0,
            "tag": "star",
            "attachedTag": "heartBg"
        },
        {
            "frameCache": false,
            "sprite": "chapter/diamond.png",
            "anchorPoint": "{0.5, 0.5}",
            "position": "{2, 15}",
            "localZorder": 0,
            "tag": "star",
            "attachedTag": "diamondBg"
        }
    ],
    "Label": [
        {
            "labelSystemFont": "null",
            "labelBMFont": "null",
            "labelCharMap": "fonts/font_chapter_menu.png",
            "fontsize": 30,
            "fontWidth": 17,
            "fontHeight": 25,
            "startString": "/",
            "anchorPoint": "{0.5, 0.5}",
            "position": "{80, 17}",
            "localZorder": 0,
            "tag": "starNum",
            "attachedTag": "starBg"
        },
        {
            "labelSystemFont": "null",
            "labelBMFont": "null",
            "labelCharMap": "fonts/font_chapter_menu.png",
            "fontsize": 30,
            "fontWidth": 17,
            "fontHeight": 25,
            "startString": "/",
            "anchorPoint": "{0.5, 0.5}",
            "position": "{80, 17}",
            "localZorder": 0,
            "tag": "heartNum",
            "attachedTag": "heartBg"
        },
        {
            "labelSystemFont": "null",
            "labelBMFont": "null",
            "labelCharMap": "fonts/font_chapter_menu.png",
            "fontsize": 30,
            "fontWidth": 17,
            "fontHeight": 25,
            "startString": "/",
            "anchorPoint": "{0.5, 0.5}",
            "position": "{80, 17}",
            "localZorder": 0,
            "tag": "diamondNum",
            "attachedTag": "diamondBg"
        }
    ],
    "Menu": [
        {
            "item1": "btn/addNormal.png",
            "item2": "btn/addPressed.png",
            "position": "{156, 17}",
            "localZorder": 0,
            "tag1": "itemImage1",
            "tag2": "itemMenu1",
            "attachedTag": "heartBg"
        },
        {
            "item1": "btn/addNormal.png",
            "item2": "btn/addPressed.png",
            "position": "{156, 17}",
            "localZorder": 0,
            "tag1": "itemImage2",
            "tag2": "itemMenu2",
            "attachedTag": "diamondBg"
        },
        {
            "item1": "btn/returnNormal.png",
            "item2": "btn/returnPressed.png",
            "position": "{75, 60}",
            "localZorder": 0,
            "tag1": "itemImage3",
            "tag2": "itemMenu3",
            "attachedTag": "null"
        },
        {
            "item1": "btn/shopNormal.png",
            "item2": "btn/shopPressed.png",
            "position": "{1200, 60}",
            "localZorder": 0,
            "tag1": "itemImage4",
            "tag2": "itemMenu4",
            "attachedTag": "null"
        }
    ]
}

二、调用方式

如果是纯静态页面布局,直接使用以下代码上面三行就可以了
如果要获得节点进行操作,则按照下面的方式获得。

    //载入布局
    UI *ui = new UI();
    auto layer = ui->UICreate("ui/chapter_menu.txt");
    this->addChild(layer, 10);

    //获得文本标签
    m_pLabelStar = (Label*)layer->getChildByName("starBg")->getChildByName("starNum");
    m_pLabelHeart = (Label*)layer->getChildByName("heartBg")->getChildByName("heartNum");
    m_pLabelDiamond = (Label*)layer->getChildByName("diamondBg")->getChildByName("diamondNum");

    //获得按钮
    auto menu1 = (Menu*)layer->getChildByName("heartBg")->getChildByName("itemMenu1");
    auto menu2 = (Menu*)layer->getChildByName("diamondBg")->getChildByName("itemMenu2");
    auto menu3 = (Menu*)layer->getChildByName("itemMenu3");
    auto menu4 = (Menu*)layer->getChildByName("itemMenu4");
    auto item1 = (MenuItemImage*)menu1->getChildByName("itemImage1");
    auto item2 = (MenuItemImage*)menu2->getChildByName("itemImage2");
    auto item3 = (MenuItemImage*)menu3->getChildByName("itemImage3");
    auto item4 = (MenuItemImage*)menu4->getChildByName("itemImage4");
    item1->initWithCallback(CC_CALLBACK_1(ChapterScene::onHeartBtnPressed, this));
    item2->initWithCallback(CC_CALLBACK_1(ChapterScene::onDiamongBtnPressed, this));
    item3->initWithCallback(CC_CALLBACK_1(ChapterScene::onReturnBtnPressed, this));
    item4->initWithCallback(CC_CALLBACK_1(ChapterScene::onShopBtnPressed, this));

三、资源下载

资源下载

cocos2dx 3.2下利用ui::scrollView实现跑马灯滚动效果 思路和上一篇一样 阅读详情

相关推荐

cocos2dx ui编辑器生成界面的管理

说这个问题之前,先说不用各种UI编辑器的时候,开发一个界面的样子。         比如我们要做这样一个界面(图片素材来自百度图片,侵权不怪我。。。)         我们应该肿么处理这个界面,为了代码好看,可以复用等原因,显然是应该分层分组件,就像这样。         然后我们开始编辑代码,分3个layer,每个layer里面加各种按钮,写上各种触发函数。然后其他地方要用,只需要

后大学时代学习笔记 4135

cocos2d-x 3.0 使用UILayout布局开发

Cocos2dx使用cocostudio导出的UI文件进行UI设置。   1. 添加库项目   在“解决方案资源管理器”中找到整个解决方案,右击,选择“添加”->“现有项目”。在弹出的对话框中找到“项目目录/cocos2d/cocos/editor-support/cocostudio/proj.win32/libCocoStuido”点击确定,即可加入到解决方案中,效果如图所示:  

mykafeier的专栏 1787

cocos2dx UI自适应屏幕

现在项目UI改用CocosStudio,

piao 2400

Cocos2d-x Layout简单使用

1、 Text* alert = Text::create("Layout", "fonts/Marker Felt.ttf", 30 ); alert->setColor(Color3B(159, 168, 176)); alert->setPosition(Point(widgetSize.width / 2.0f,

杜甲同学的专栏 5634

cocos2dx3.x加载使用cocostudio导出的UI项目

1.先用cocostudio导出工程,这个没什么太多可说 2.将导出的资源放入cocos2d-x资源目录中 3.由于cocos2d-x3.0工作目录是放在其它地方,所以要引用 libCocoStuido、libGUI、libExtension这三个库 4.添加库方法:在“解决方案资源管理器”中找到整个解决方案,右击,选择“添加”->“现有项目” 你的cocos的

ibey0nd的专栏 2053

Cocos2d-x 3.0 开发(十五)使用UILayout布局,制作对话界面

编辑器中能设计静态展示的UIScrollView,而通常我们都需要在程序中动态增加信息。插入元素的位置怎么确定?在3.0中UILayout已经实现了基本的布局,这个例子则是一个简单的实现。相关博客地址:http://blog.youkuaiyun.com/fansongy/article/details/17382049

从零开始学习cocoStudio(2)--GUI学习

一、UI 框架的使用方法以及常用接口介绍 1.cocos2d-x 使用UI框架的步骤:     1)cocos2d-x 导入cocoStudio的UI编辑器文件(json)     2)创建控件:绑定控件、编码创建控件     3)使用控件做逻辑处理:比如,按钮、listview、scrollview等等控件做响应事件。     注释:  json 文件(由 ui

小枫的专栏 7070

从零构建:Simulink与PX4的快速原型开发实战

本文详细介绍了如何利用Simulink与PX4进行四旋翼无人机的快速原型开发,涵盖环境搭建、动力学建模、控制器设计、仿真验证及自动代码生成全流程。通过实战案例展示姿态控制器的实现与调试,帮助开发者高效完成从算法设计到硬件部署,显著提升开发效率并降低试错成本。

plant的博客 322

Cocos2dx之使用UI库结合cocostudio

使用cocostudio的UI编辑器编辑好UI界面,导出UI文件,直接在cocos2dx中使用,通过tag或者name来获取到UI控件 1、编辑ui界面,直接用模板然后拖几个控件过去 2、cocos2dx种加载这个编辑好的UI,必须先加载cocostudio库,具体操作参照: http://blog.youkuaiyun.com/yangxuan0261/article/deta

世事,为之则易,不为则难! 1万+

【数据集】中国陆地生态系统通量观测网 ChinaFLUX

【数据集】中国陆地生态系统通量观测网 ChinaFLUX

WW、forever的博客 185

倒立摆的PLC控制(模型分析+ SCL源代码)

首先简单介绍下倒立摆模型,下面这幅图是MATLAB网站上的倒立摆模型,下面我们利用牛顿第二运动定律建立摆杆的运动方程。

RXXW_Dor的博客 3327

cocos2dX UI控件之CCLabelTTF

这个, 由于群里问的朋友比较多,

hushuai1992 1343

【LLM技术全景】规模定律与模型演进:为什么模型越大越强?

规模定律性能 ∝ 参数量^N性能 ∝ 数据量^M性能 ∝ 计算量^L其中 N, M, L 是小于1的正数(通常0.05~0.15)关键观察损失与规模的关系呈幂律(不是线性,也不是对数)三个要素(参数、数据、计算)需要协调增长只增加其中一个要素,收益会边际递减规模定律(Scaling Law):1. 模型性能与参数量、数据量、计算量呈幂律关系2. Kaplan定律(2020):参数量是主要因素3. Chinchilla定律(2022):数据和参数同等重要,最优比例1:20。

专注:太空算力、AI infra、异构调度、大模型成本工程 492

Cocos2dx UI系列控件其一

游戏开发中,经常会使用到很多有关界面的控件,这些都属于UI控件。 所有UI控件的基类都继承Widget类,这个类是节点类的一种,若要自定义UI控件,继承这个类是必须的。 Widget类里包含了: FocusDirection 控件焦点方向 PositionType 布局系统中的控件位置类型 SizeType 布局系统中的控件尺寸类型 TouchEventType 触摸事件类型 Tex

GladiolusLai的博客 3120

PCIE的MSI中断处理机制与优化策略

PCIe设备的。

xiaoheshang_123的博客 513

HighTec安装使用

HighTec安装使用

qq_43552564的博客 3833

Cocos2dx富文本 RichText的使用

Cocos2dx富文本 RichText的使用 local richText = ccui.RichText:create() // Left:0 center:1 right:3 richText:setHorizontalAlignment(1) // 锚点 richText:setAnchorPoint(0,0.5) // 忽略内容调整缩放 richText:ignoreContentAdaptWithSize(false) // 宽高 richText:setContentSize(cc.

zihao127589的博客 2427

15、虚拟环境中的数据保护与恢复方案解析

本文深入解析了虚拟环境中两种重要的数据保护与恢复解决方案:RecoverPoint for Virtual Machines(RP4VM)在VxRail上的设计,以及Veeam Backup & Replication(VBR)与VxRail的集成方案。文章详细介绍了RP4VM的网络布局、故障转移场景及其相关问题,以及VBR的架构设计、备份与复制流程、许可证选项及其多平台支持特性。此外,还探讨了RP4VM与VBR结合使用的综合解决方案,以及未来数据保护领域的发展趋势,如智能化管理、云原生集成和零信任架构,为

t4y5u6i7o的博客 93

cocos2dx 中通过 jni 显示UI

cocos2dx开发中,经常用到第三方sdk。(如分享,广告等)。这些sdk一般用java实现,且自带UI。此文介绍如何通过jni实现这些ui的正常显示。 当用c++调用java时,jni会启动子线程,在子线程中调用java,而我们知道子线程是不能用来显示UI的。所以,若要ui正常显示,就得做一些处理。 jni的相关内容,这里就不提了,下面只说说java层如何实现。我们以对话框为例

W469486139的专栏 1000

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Cocos2d-x 3.9教程:10.使用CocosStudio的UI编辑器从UI文件中加载布局和控件

Cocos2d-x 3.9教程 10. 使用CocosStudio的UI编辑器从UI文件中加载布局和控件 1.1. 使用CocosStudio的UI编辑器 1.1.1. 安装和启动 从官网上下载2015年11月18日版本,Cocos studio 2.3.3。   安装完毕后,桌面出现两个图标。 Cocos Studio是我们的UI、动画等编辑器。Cocos是项目管理器,且它

tiancao222的博客 1万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

【亲测免费】 FairyGUI Cocos2dx SDK:打造高效灵活的游戏UI开发体验

FairyGUI Cocos2dx SDK:打造高效灵活的游戏UI开发体验 项目介绍 FairyGUI Cocos2dx SDK 是一款专为Cocos2dx引擎设计的灵活UI框架,旨在与FairyGUI编辑器无缝协作,为游戏开发者提供高效、便捷的UI开发体验。FairyGUI编辑器是一款功能强大的免费UI编辑工具,操作简单,界面设计与Adobe系列软件高度一致,使得策划和美术设计师能够轻松上手,快...

gitblog_00085的博客 444

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Cocos2dx之UI组件

Cocos2d-x提供了一套UI组件。包括 Label Menu Buttons Checkbox Loading Bar Slider TextField Label Cocos2d-x提供Label对象,可以用真值类型、bitmap(位图)或内置系统字体来创建。 Label BMFont BMFont是一种Label类型,它使用bitmap(位图)字体。位图中的字符由点的矩阵组...

weixin_40763897的博客 2758

给cocos2dx的ui::ScrollView增加滚动条

本人现在的cocos2dx的版本是3.0

jijun7885417的专栏 6042

cocos2dx的UI

COCOS的UI感觉很少,相对于安卓来说,也许游戏不需要那么多的需求吧。 CCLabel是CClabelxxx的总称,在cocos中并不存在这么一个类供子类继承。 CCLabelProtocol接口即CCLabel源代码class CC_DLL CCLabelProtocol { public: virtual void setString(const char *label) = 0;

木鱼水心 1407
上一篇: Cocos2dx杂记:cocos2dx 3.14.1 Spine 处理与 cocos2dx3.10 Spine的区别
下一篇: Cocos2dx杂记:如何显示中文(2)
胖胖的战士
博客等级 码龄18年 104粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值