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

手机相机基础技术解析:从硬件到算法的全面指南

手机相机的成像过程可简化为的链路,其核心硬件包括 镜头、CMOS传感器、ISP(图像信号处理器) 以及配套的软件算法。

weixin_44239603的博客 2447

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万+

用VSCode搭建Vue.js开发环境及Vue.js第一个应用

用VSCode搭建Vue.js开发环境及Vue.js第一个应用

m0_61961937的博客 1万+

保姆级教程:用YOLOv5s搞定钢材表面缺陷检测,从数据集NEU-DET到模型部署全流程

本文提供了一份详细的YOLOv5s钢材表面缺陷检测教程,涵盖从NEU-DET数据集处理到模型部署的全流程。针对工业环境中的实际限制,如计算资源有限和标注样本少等问题,提供了优化方案和实用技巧,帮助开发者快速实现高效的钢材缺陷检测系统。

weixin_30568591的博客 463

cocos2dX UI控件之CCLabelTTF

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

hushuai1992 1343

运放偏置电路设计:如何精准计算差分放大器的电压偏移量

本文深入解析了差分放大器偏置电路的设计原理与精准计算方法,重点阐述了如何通过引入参考电压实现信号电压偏移,以适应单电源ADC的输入范围。文章结合实战案例,详细推导了偏移电压公式,并强调了电阻匹配、运放选型及PCB布局对精度和共模抑制比的关键影响,帮助硬件工程师避免常见设计陷阱。

weixin_29288313的博客 632

Cocos2dx UI系列控件其一

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

GladiolusLai的博客 3120

树冠体积计算之体元累加法

因为是自己之前研究的一个方向,就复现了一下论文中的这个方法,在此正好记录一下。 文章目录一、简介二、代码实现(MATLAB)三、小结 一、简介 简而言之,其实就是一句话,即以固定大小的体元模拟不规则的树冠形状。按照论文中的思路主要就是将树冠沿树高方向以 k 为步长进行等距离分段,把每一段树冠的点投影到垂直于树高方向的平面上,再对该平面划分成大小为 k × k 的像元,根据投影到各个像元内点的数量,判断该像元的有效性,统计有效像元的数量 T,则树冠体积为 T 个 k × k × k 的体元之和。如下图所示:

dayuhaitang1的博客 2605

Qt垂直滚动条QVerticalScrollBar详解:从基础到实战的控件开发指南

本文系统解析Qt中QVerticalScrollBar的用法,从基础概念到进阶技巧。主要内容包括:1)基础认知:介绍其继承关系、作用及典型应用场景;2)核心用法:创建方法、关键属性配置和信号槽连接;3)进阶技巧:自定义样式表美化外观,以及与自定义内容区域的联动实现;4)实战注意事项,如避免循环触发和高DPI适配等。文章强调掌握QVerticalScrollBar对提升Qt滚动类功能开发效率的重要性,并建议通过自定义文本编辑器实践巩固知识点。

专注现代C++实战,从核心语法到高性能编程,助力开发者深入掌握系统级编程精髓。 755

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

YOLOv11官方代码库与预训练模型下载:介绍Ultralytics官方GitHub及模型权重(yolov11n.pt, yolov11s.pt等)

本文介绍了Ultralytics官方GitHub仓库和YOLOv11预训练模型。Ultralytics仓库是YOLO系列算法的官方实现,包含YOLOv11最新代码、预训练模型、文档和工具。仓库采用清晰的代码结构和活跃的更新策略,支持全流程开发。YOLOv11提供了5种不同规模的模型变体(YOLOv11n/s/m/l/x),在精度、速度和模型大小间权衡,适用于从移动设备到高精度检测等不同场景。各模型在COCO数据集上预训练,可直接使用或微调,满足多样化应用需求。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 5819

cocos2dx 中通过 jni 显示UI

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

W469486139的专栏 1000

VSCode + QMT 量化交易完整解决方案!

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 1326

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

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

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万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

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

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

gitblog_00085的博客 444

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

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、付费专栏及课程。

余额充值