如何在SpriteBuilder中使用BM Font Label
开始不知道,还真有点小繁琐。
mac系统上创建BM Font的工具有不少,我主要用hiero和GlyphDesigner;前者是java写的,后者是mac原生的,功能都差不多。
还有一个类似的工具bmGlyph。
首先根据不同平台解决方案建立不同的字体尺寸,建议大小如下表:
Table 11-2. Bitmap font scaling for each resources folder
Absolute (iPad screen is 512x384)
UI Scale (iPad screen is 1024x768)
resources-phone
25% (i.e., Font size: 12)
50% (i.e., Font size: 24)
resources-phonehd
50% (i.e., Font size: 24)
100% (i.e., Font size: 48)
resources-tablet
50% (i.e., Font size: 24)
50% (i.e., Font size: 24)
resources-tablethd
100% (i.e., Font size: 48)
100% (i.e., Font size: 48)
创建完毕后导出为.fnt和.png两个文件,比如1.fnt和1.png
在SpriteBuilder中创建一个Fonts文件夹,然后根据上面创建的字体文件名在Fonts中建立1.bmfont文件夹然后在其中依次建立4个子文件夹:
resources-phone, resources-phonehd, resources-tablet, and resources-tablethd,然后按照不同的平台放入不同尺寸的字体文件(1.fnt和1.png)。
为了示例,我只是将1.fnt和1.png拷贝4次放到4个文件夹中,实际项目中需要修改尺寸以对应不同平台。
注意你建立的1.bmfont后,该文件夹名字会自动变为1.bmfont. ,即后面会多出一个点;这个先不用管,后面会说明处理办法。
这时的文件夹类似如下布局:
只不过图中的字体名称为gd。
在SpriteBuilder中File View视图中鼠标右键点击1.bmfont.文件夹选择Show in Finder,在打开的Finder窗口中将1.bmfont.改为1.bmfont。再回到File View视图中,发现字体图标发生了变化:
接下来,在场景中拖入一个Label BM-Font控件:
将其Font file属性设置为1.bmfont:
你可以将该Label链接到一个变量,然后就可以在Xcode中代码引用了。
我添加了一段倒计时代码,从10到0,然后切换game over场景:
-(void)updateCountDownLabel:(CCTime)dt{
_countdownSecs += dt;
if (_countdownSecs >= _totalSecs) {
CCScene *gameoverScene = [CCBReader loadAsScene:@"Gameover"];
[[CCDirector sharedDirector] replaceScene:gameoverScene];
}
float tmp = _totalSecs - _countdownSecs;
int sec = tmp * 100 / 100;
int msec = (int)(tmp*100)%100;
NSString *str = [NSString stringWithFormat:@"%2d %2d",sec,msec];
//[_countDownLabel setString:str];
[_countDownLabelBMF setString:str];
}
-(void)update:(CCTime)delta{
[self updateCountDownLabel:delta];
}
最终效果如下图:
如何在SpriteBuilder中使用BM Font Label的更多相关文章
- 如何在SpriteBuilder中设置对象的通用属性
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 我们知道在SpriteBuilder中可以为对象设置自定义类从 ...
- (转)在iOS中使用icon font
http://ued.taobao.org/blog/?p=8579 在开发阿里数据iOS版客户端的时候,由于项目进度很紧,项目里的所有图标都是用最平常的背景图片方案来实现.而为了要兼容普通屏与Ret ...
- SpriteBuilder中使用TrueType字体的一些障碍
在实践中,有一些小的陷阱和障碍可能阻止你使用一般的TrueType字体. 第一个,必须要有一个有效的字体文件.在Finder中双击该.ttf文件,应该会打开Font Book app,显示一个象形符号 ...
- 在iOS中使用icon font
博文转载至 http://www.cocoachina.com/industry/20131111/7327.html 在开发阿里数据iOS版客户端的时候,由于项目进度很紧,项目里的所有图标都是用最平 ...
- 如何在CSS中使用变量
前言 CSS变量(官方称为自定义属性)是用户定义的值,它可以在你的代码库中设置一次并多次使用.它们使管理颜色.字体.大小和动画值变得更加容易,并确保整个web应用的一致性. 举个例子,你可以将品牌颜色 ...
- 如何在latex 中插入EPS格式图片
如何在latex 中插入EPS格式图片 第一步:生成.eps格式的图片 1.利用visio画图,另存为pdf格式的图片 利用Adobe Acrobat裁边,使图片大小合适 另存为.eps格式,如下图所 ...
- 如何在Linux中查看所有正在运行的进程
如何在Linux中查看所有正在运行的进程 FROM:http://os.51cto.com/art/201101/244090.htm 进程是一个其中运行着一个或多个线程的地址空间和这些线程所需要的系 ...
- 如何在Unity中分别实现Flat Shading(平面着色)、Gouraud Shading(高洛德着色)、Phong Shading(冯氏着色)
写在前面: 先说一下为什么决定写这篇文章,我也是这两年开始学习3D物体的光照还有着色方式的,对这个特别感兴趣,在Wiki还有NVIDIA官网看了相关资料后,基本掌握了渲染物体时的渲染管道(The re ...
- 如何在vue中使用ts
注意:此文并不是把vue改为全部替换为ts,而是可以在原来的项目中植入ts文件,目前只是实践阶段,向ts转化过程中的过渡. ts有什么用? 类型检查.直接编译到原生js.引入新的语法糖 为什么用ts? ...
随机推荐
- 物料REVISION控制
--新增 INV_ITEM_REVISION_PUB.Create_Item_Revision ( p_api_version IN NUMBER , p_init_msg_list IN VARCH ...
- [ExtJS5学习笔记]第九节 Extjs5的mvc与mvvm框架结构简介
本文地址:http://blog.csdn.net/sushengmiyan/article/details/38537431 本文作者:sushengmiyan ------------------ ...
- XML Schema
XML Schema 是基于 XML 的 DTD 替代者. XML Schema 描述 XML 文档的结构. XML Schema 语言也称作 XMLSchema 定义(XML Schema Defi ...
- HTML5中 HTML格式化/HTML样式/链表/表格-样式 韩俊强的博客
HTML5学习从简单到复杂,循环渐进! 每日更新关注:http://weibo.com/hanjunqiang 新浪微博! 1.HTML格式化 <!DOCTYPE html> <h ...
- Android面试题目总结
1.java 基础题,输入结果是什么? public static void main(String[] args) { String str = new String("abc" ...
- Tapestry: Obtained resource by @Inject is NULL
Issue: When you inject some resources by @Inject Annotation in Tapestry Page or other components, yo ...
- 关于C语言中输出格式
刷OJ题的时候,经常发现题目的输入输出会有相应的特殊要求,像位宽和位域输出就比较常见. 位宽:如果长度不足位宽大小,则默认情况下前面补空格. 标志位:有+有- 默认格式为左对齐. 在位宽前面加0,补全 ...
- JAVA之旅(十八)——基本数据类型的对象包装类,集合框架,数据结构,Collection,ArrayList,迭代器Iterator,List的使用
JAVA之旅(十八)--基本数据类型的对象包装类,集合框架,数据结构,Collection,ArrayList,迭代器Iterator,List的使用 JAVA把完事万物都定义为对象,而我们想使用数据 ...
- Android ToggleButton 实践
在android的开发过程中,对于ToggleButton的使用频率也是相当的高的,下面我就来说一下,这个组件的两种使用方式. 第一种是简单的使用,利用Toast的方式弹出提示语句 需要注意的是要想自 ...
- Java由先序序列和中序序列还原二叉树
还原本来的二叉树并不是一个非常简单的事,虽然思想比较简单,但过程却是比较繁琐.下面我拿先序序列和中序序列来讲一下原理吧. 从先序序列中我们一下子就可以得到二叉树的根节点是第一个元素,然后再中序序列中我 ...