【教程分享】Cocos2dx 3.0 -- 有freeType做靠山的Label

楼主的那个呵呵是自定义字形吧。。。

很不错啊, 支持

哎,说的我好像升级框架版本

果然是极耗精力的

:11::11::7::7::7:

怎样才能做出一片文章有个别句子是不同颜色的,有的还可以加下划线什么的呢

!原来是你啊。。。csdn也是这个昵称嘛

3.x出来的时候就对这个东东惊呆了,确实很好。于是就去抠了下它的代码,美中不足只能等宽字体。

后来仔细想了想,感觉有点疑问。不知道我对代码的理解对不对,看这代码已经是1个多月前的事情了,只能按照印象描述一下。

字体用freetype抠出字模,把它缓存到一个512x512的像素矩阵里。如果一个矩阵装不下,就在创建一个新的,如此反复。每个word都是通过hash表来访问矩阵,和矩阵偏移信息。

随着使用这种机制的word越来越多,字模缓冲矩阵就会越来越多,比如假设我们有个聊天系统。

以上都没有问题,机制很棒。

Label在处理内容的时候为了加速渲染,使用了若干batchnode,这些batchnode的数量是缓存字模矩阵的数量。就算某个batchnode没被命中也会创建和加入label中。
这会占用非常非常非常多的内存。在随机内容的label中,比如说玩家名字,即短小又分散,batchnode机制收效甚微。但是占用了大量的内存。

可能我只是想显示5个汉字,但是可能却占用了10K的内存,而且没有任何性能上的提升。

这个label我感觉应该有两种渲染模式。对于聊天显示窗口这种单例的大部头的东西使用batchnode是划算的。普通情况下,可以完全放弃渲染优化考虑。

对于UI上的固定word,由于他们产生的时机和连续性,极大可能在同一个字模缓存里。对于随机内容,怎么优化都是白费。就用默认渲染优化折叠机制去碰运气吧。

你们有碰到过V3.x的Label用TTF的时候,在安卓下面乱码的情况吗?

就是游戏运行一段时间,按home键切出游戏再回来的时候,文字经常会乱码或者边方块。

有时候一段文字里面,显示的时候还会少几个字。

搞得我都不敢用Label + TTF了,只能用系统字体。

1赞

学习了:2::2:

顶Star Glow就是外发光的意思

label 有行间距和垂直间距的接口吗

我用bmfont制作了字体 导出了后文件为 123.fnt和123_0.png , 123_0.png图中有"传企"这个两个字,

在程序中添加代码:
CCLabelBMFont *b3=CCLabelBMFont::create(“传企”,“fonts/123.fnt”);
b3->setPosition(ccp(100,100));
b3->setColor(ccc3(255,0,0));
this->addChild(b3);

环境为 cocos2d-x2.2.2 vs2012

运行程序后,在vs2012上就是显示不出来中文,如果将"传企"改成字符或数字就可以显示了(我已经同操作 ”文件“—>“高级选项保存”—>“编码”----->“utf-8”);

请问这个问题怎么解决!
谢谢!

看了全部 顶帖:2::2::2:

同好奇“呵呵”为何

学习了,3q:2::2::2::2:

好帖,支持一下