如何在SpriteBuilder中使用BM Font Label
2015-09-16 21:25
471 查看
开始不知道,还真有点小繁琐。
mac系统上创建BM Font的工具有不少,我主要用hiero和GlyphDesigner;前者是java写的,后者是mac原生的,功能都差不多。
还有一个类似的工具bmGlyph。
首先根据不同平台解决方案建立不同的字体尺寸,建议大小如下表:
创建完毕后导出为.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场景:
最终效果如下图:
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]; }
最终效果如下图:
相关文章推荐
- hdu3836 Equivalent Sets(有向图至少添加多少条边才能变为强连通图+tarjan缩点)
- 【UIActivityIndicator活动指示器控件】
- iOS疯狂讲解之KVO键值观察者(key- values-observer)
- 关于导航栏和状态栏的一些UI设置
- NGUI的UI Root
- easyui+rest服务,ajax请求session过期不跳转问题解决
- SQL Server ->> DISABLE索引后插入更新数据再REBUILD索引 和 保留索引直接插入更新数据的性能差异
- UITabBarController
- 【Android笔记】多线程与 UI 交互的方法
- C#中return、break、continue的用法
- 【Android笔记】多线程与 UI 交互的方法
- iOS——UI学习笔记(3)
- UIView 总复习
- USACO Section 1.4 More Search Technique
- UIWindow
- iOS——UI学习笔记(1)
- UIPickerView
- UITableView
- 文本输入控件 UITextField
- UI_模态跳转