cocos2d-x学习笔记(六)TextBMFont控件显示中文乱码或者无法显示

今天用cocos studio加了一个TextBMFont控件,然后需要动态修改TextBMFont控件显示的字符串,用来显示中文的,结果一直无法修改TextBMFont控件的值,最后原来是写到xml文件的中文字符串没有保存成UTF-8格式。

=====================================================================================

记录一下完整实现步骤

一、制作BMFont字体

1、下载并安装BMFont软件

2、因为要用到中文字符,所以要进行字体设置。选项->字体设置

3、设置导出设置,选项->输出设置

4、新建txt文本,输入所需要的字符,然后另存为UTF-8格式,否则软件不识别

5、回到BMFont软件,编辑->从文件中选择字符,找到刚才保存的txt文本

6、选项->位图字体另存为,这样就生成了fnt和png格式的文件

二、新建XML文件

由于cocos2d-x直接使用会出现乱码,这里我们使用将中文字符写到xml文件中的方法。注意文件编码要保存为UTF-8,xml文档格式如下

<dict>  
    <key>hello</key>  
    <string>你好</string>  
    <key>world</key>  
    <string>世界</string>  
</dict>

三、代码中解析

auto m_res = CSLoader::createNode("test.csb");
if(m_res == nullptr)
{
return false;
}
addChild(m_res);
ui::TextBMFont* show = dynamic_cast<ui::TextBMFont*>(chestTip->getChildByName("Show"));
//创建词典类实例
auto config = Dictionary::createWithContentsOfFile("Config.xml");
const char *hello = ((String*)config->objectForKey("hello"))->getCString();
show>setString(hello);

注:test.csb是在cocos studio下导出的文件,

需要#include "../cocos/editor-support/cocostudio/CocoStudio.h"

时间: 2024-10-17 10:57:58

cocos2d-x学习笔记(六)TextBMFont控件显示中文乱码或者无法显示的相关文章

Android学习笔记:常用控件 RadioGroup和CheckBox

RadioGroup和CheckBox是android的常用控件,本文自做简单介绍和学习笔记,所以所用的控件样式选用android默认的样式. 先看下代码实现的效果图 图中,上面两个(male和female)为一个RadioGroup中的两个RadioButton,下面三个为CheckBox. 一个RadioGroup里面的内容只可单选,CheckBox可多选. 接下来是代码部分 布局文件代码activity_main.xml : <LinearLayout xmlns:android="

android学习笔记(2)EditText控件的学习

对应若水老师的第五课 一,设置一个输入框 添加控件: <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="52dp" <!--本控件顶部距离上一个控件的距离--> /> 二,消除输入框的聚焦 方法一: <EditText android:layout_wi

Android开发学习笔记-自定义组合控件的过程

自定义组合控件的过程 1.自定义一个View 一般来说,继承相对布局,或者线性布局 ViewGroup:2.实现父类的构造方法.一般来说,需要在构造方法里初始化自定义的布局文件:3.根据一些需要或者需求,定义一些API方法: ----------------------------------4.根据需要,自定义控件的属性,可以参照TextView属性: 5.自定义命名空间,例如: xmlns:itheima="http://schemas.android.com/apk/res/<包名&

【ExtAspNet学习笔记】ExtAspNet控件库中常见问题

1.在Grid控件中添加CheckBoxField控件,选择一行时,如何获取选择的CheckBoxField所对应记录的唯一标识值? ●解决方案: 在前台Grid控件中, 添加“<ext:CheckBoxField ColumnId="myCheckBoxField" Width="60px" RenderAsStaticField="false"  DataField="MyCheckBox" CommandName=

【学习笔记】Android控件的使用

一.Spinner 1)在布局文件中添加一个Spinner控件后,在MainActivity中定义了Spinner后,需要设置适配器 2)为了知道我们选择了哪个选项,需要进行监听.里面的position代表数组中选择的下标

Android开发学习笔记-自定义组合控件

为了能让代码能够更多的复用,故使用组合控件.下面是我正在写的项目中用到的方法. 1.先写要组合的一些需要的控件,将其封装到一个布局xml布局文件中. <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="

PyQt5学习笔记04----Qt Designer控件的通用属性

在Qt Designer中的右边为我们提供了窗体.控件.布局的属性编辑功能. 比较常用的有: objectName 控件对象名称 例:quitButton= QtWidgets.QPushButton() 等号前面的那个名字 geometry 相对坐标系 sizePolicy 控件大小策略 minimumSize最小宽度.高度 maximumSize最大宽度.高度  如果想让窗体或控件固定大小,可以将mini和max这两个属性设置成一样的数值 font 字体 cursor 光标 windowTi

Framework7新版学习笔记之 开关控件

一:开关控件 新版F7增加了开关控件,在界面中提供一个开关按钮,点击它进行 打开/关闭. 二:定义开关控件并自动初始化 <label class="toggle color-xx toggle-init"> <input type="checkbox"> <span class="toggle-icon"></span> </label> 三:在js中获取开关值 var toggle =

android学习笔记(3)Button控件的学习

对应若水老师的第六课 一,加入一个button并用外部类绑定事件 //XML文件: <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:text="扣子1&qu