首页 技术 正文
技术 2022年11月8日
0 收藏 900 点赞 1,568 浏览 2011 个字

文字也是游戏最重要的元素之中的一个,以下就看看使用动态字体和静态字体库怎样创建文字。使用动态字体库创建的文字能够包括经常使用的不论什么字符,一般假设用户要输入名字,这就最好用动态字体库。由于你不知道用户要创建什么字符,但动态字体库比較大。假设要压缩包的大小,尽量就用静态字体库,以下会介绍怎样制作静态字体库。

动态字体库

在系统的System32/Font文件下就有若干多个字体库,比如微软雅黑.ttf等。我们能够找一个ttf文件直接放在Resource文件下。

CCLabelTTF *label = CCLabelTTF::create(G2U("hello,世界"),"bb1519",25);
label->setPosition(ccp(size.width/2,size.height/2));
this->addChild(label);

由于cocos2dx在windows平台下中文字体须要进行一个转码,cocos中中文默认的是gb2312编码,而OpenGL渲染中文的时候支持UTF8编码格式,这就须要进行一个转码。不然的话显示出来会是乱码。

转码函数:

//转码成utf-8,windows默认gb2312
char* HelloWorld::G2U(const char* gb2312)
{
int len = MultiByteToWideChar(CP_ACP, 0, gb2312, -1, NULL, 0);
wchar_t* wstr = new wchar_t[len+1];
memset(wstr, 0, len+1);
MultiByteToWideChar(CP_ACP, 0, gb2312, -1, wstr, len);
len = WideCharToMultiByte(CP_UTF8, 0, wstr, -1, NULL, 0, NULL, NULL);
char* str = new char[len+1];
memset(str, 0, len+1);
WideCharToMultiByte(CP_UTF8, 0, wstr, -1, str, len, NULL, NULL);
if(wstr) delete[] wstr;
return str; }

静态字体库

静态字体库是以fnt命名格式的文件,和还有一张png字体图集相应的。程序中仅仅能显示静态字体包括的字符,假设字库里面没有该字符的话。界面中就不会显示出来。

怎样制作静态字体库?

1.下载安装BMFont工具;2.新建文本文件。里面输入想要的字符,切记要保存为utf8格式。不然软件不识别。3.打开BMFont工具,Edit->Select char from file,导入刚刚的字符文本。软件会自己主动识别你所输入的字符,而且灰色显示。

[windows+cocos2dx]文本类4.选择Option->FontSetting[windows+cocos2dx]文本类5.选择Option->Save bitmap font as,保存字库[windows+cocos2dx]文本类

6.设置导出选项,在BMFont上找到Option菜单,然后选择Export options。在cocos2d-x中须要按例如以下设置

[windows+cocos2dx]文本类

7. 准备导出字体。在BMFont上找到Options,然后选择Save bitmap font as,会发现保存路径下多出了一个fnt文件和一个png文件(事实上这个和plist文件保存拼图信息原理差点儿相同),将它们复制到cocos2d-xproject的Resources文件夹下

代码创建文字

CCLabelBMFont *labelfont = CCLabelBMFont::create("i am dingxiaowei","text.fnt");
labelfont->setPosition(ccp(size.width*0.5,size.height/2 -30));
this->addChild(labelfont);

效果图

[windows+cocos2dx]文本类静态字体库创建的文本会发现显示的文字跟我们输入的有差别,没有显示全,这就是静态字体库创建的label须要注意的,必须要确保你想要显示的字符。在静态字体库中都要有!第二种创建文本的方法:

CCLabelAtlas *labelalt = CCLabelAtlas::create("hello,alets","xxx.plist");
labelfont->setPosition(ccp(size.width*0.5,size.height/2 -30));
this->addChild(labelfont);

欢迎关注我的围脖

==================== 迂者 丁小未 CSDN博客专栏=================

MyBlog:http://blog.csdn.net/dingxiaowei2013             MyQQ:1213250243

Unity QQ群:375151422      cocos2dx QQ群:280818155

====================== 相互学习,共同进步 ===================

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,130
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,601
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,444
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,218
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,852
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,940