Android游戏框架libgdx——BitmapFont的构造
自由转载 ^_^ 同时请注明原文出处:http://www.cnblogs.com/wangvsa/archive/2013/02/04/2891467.html
BitmapFont用来渲染bitmap字体。
一、构造BitmapFont需要两个文件:
1.fnt文件
这个文件用来描述字体,其内容大致如下:
info face="Miso" size=70 bold=0 italic=0 charset="" unicode=0 stretchH=100 smooth=1 aa=1 padding=0,0,0,0 spacing=0,0
common lineHeight=78 base=62 scaleW=512 scaleH=512 pages=1 packed=0
page id=0 file="loadingFont.png"
chars count=188
char id=32 x=0 y=0 width=0 height=0 xoffset=0 yoffset=62 xadvance=13 page=0 chnl=0
char id=166 x=0 y=0 width=6 height=75 xoffset=5 yoffset=2 xadvance=15 page=0 chnl=0
char id=124 x=6 y=0 width=6 height=75 xoffset=6 yoffset=2 xadvance=15 page=0 chnl=0
char id=253 x=12 y=0 width=24 height=62 xoffset=1 yoffset=15 xadvance=26 page=0 chnl=0
char id=221 x=36 y=0 width=25 height=62 xoffset=2 yoffset=1 xadvance=28 page=0 chnl=0
文件描述了字体的大小,是否粗体等。同时还指定了绘制字体需要的文件,在这是loadingFont.png。
fnt文件可以使用BMFont工具来生成。
2.绘制字体文件
这个文件可以是一个图像文件,如上面所用的就是loadingFont.png,也可以是个.ttf文件。
二、创建BitmapFont对象
获得BitmapFont的方法有多个
1.直接构造
先将上面两个文件放到Adnroid工程assets目录下的同一子目录,在这我放到assets/fonts目录下。
在代码中构造该对象:
FileHandle fontFile = Gdx.files.internal("fonts/loadingFont.fnt"); FileHandle imageFile = Gdx.files.internal("fonts/loadingFont.png"); BitmapFont fontLoading = new BitmapFont(fontFile, imageFile, false);
BitmapFont还有很多个构造函数,具体可以参照其文档。
2.通过AssetManager
有时候我们会使用AssetManager统一加载所有资源,同样也可以用它来加载fnt文件。
比如,我在Loading界面加载游戏界面的菜单字体:
assetManager.load("fonts/menuFont.fnt", BitmapFont.class);
在这仅加载fnt文件即可,不需要加载具体绘制字体的文件,libgdx会自动寻找该文件并替我们加载。
menuFont.fnt的文件头如下:
info face="Lake Wobegon NF" size=60 bold=0 italic=0 charset="" unicode=0 stretchH=100 smooth=1 aa=1 padding=0,0,0,0 spacing=0,0
common lineHeight=81 base=65 scaleW=512 scaleH=512 pages=2 packed=0
page id=0 file="menuFont1.png"
page id=1 file="menuFont2.png"
注意,要将menuFont1.png和menuFont2.png与menuFont.fnt放在同一目录下。
最后通过AssetManger的get方法获取BitmapFont对象:
BitmapFont menu = assetManager.get("fonts/menuFont.fnt", BitmapFont.class);