libgdx虽然是由美国人Mario Zechner(即BadlogicGames)写的开源引擎,由于Libgdx底层是用OpenGL实现的,所以Libgdx是可以支持中文的,在libgdx中的汉字都是通过贴图的方式显示,使用BitmapFont和SpriteBatch组合来完成文字的绘制,构造BitmapFont时需要一个描述文字构成的fnt文件,和一个提供文字图片的png文件。因此显示中文,归根结底就是读取一个包含中文信息的.fnt文件和相应的.png文件并展示出来的问题。
使用hiero.jar
注意:如果你要使用的字,只能是.fnt文件里面存在的文字,否则是显示不出来的.比如,我文件里面有“奋斗小土豆”几个字,那么我可以在程序输出的时候写出这几个字,但是我要是想输出“杜甫很忙”这4个字,因为编辑文件里面没有这几个字,那么就显示不出来。
PS: 为什么要加载fnt文件?.fnt文件是做什么用的呢?
答:由于Libgdx底层是用OpenGL实现的,所以Libgdx是可以支持中文的。但是libgdx中的汉字都是通过贴图的方式显示的,我们用记事本打开 Potato.fnt文件,里面显示的部分内容(如下图),同时对照.png图片来参考下,可以发现可以很明显看出,libgdx的文字绘制是根据fnt文件获取对应文字的在png中的坐标位置,然后截取图片的相应部分进行绘制。
2.BitmapFont类
API介绍:呈现位图字体,包括2个文件:一个图像文件textureregion,包含符号在anglecode
bmfont文本格式,描述了每个字形是图像文件。文本是使用一个SpriteBatch画。
功能用途:渲染静态文本,同时可以设置文字颜色,文字大小等。
使用方法:我们可以手动设置文字大小和颜色以及旋转,这里使用函数设置是可以的,在Hiero里面也是可以设置的,可以自行选择哪种方法设置,new()里面的false是管理翻转的。
文字换行显示,只需要在中文字符中加入换行符(\n)即可
实例代码:
package com.mygdx.drawimage; import com.badlogic.gdx.ApplicationListener; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.GL20; import com.badlogic.gdx.graphics.g2d.BitmapFont; import com.badlogic.gdx.graphics.g2d.SpriteBatch; /** * 显示与绘制汉字 * @author Jack(乐智) * @blog dtblog.cn * @qq 984137183 */ public class UseFont implements ApplicationListener { //精灵批 private SpriteBatch batch; //字体 private BitmapFont font; @Override public void create() { font=new BitmapFont(Gdx.files.internal("data/test.fnt"),Gdx.files.internal("data/test.png"),false);//加载字体文件和字体图片 font.setColor(0.5f,0.4f,0.6f,1);//设置颜色 batch=new SpriteBatch(); } @Override public void resize(int width, int height) { // TODO Auto-generated method stub } @Override public void render() { Gdx.gl.glClearColor(1, 1, 1, 1); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); batch.begin(); font.draw(batch, "我大你大呢", 200, 160);//绘制字体 font.draw(batch, "我大\n你大呢", 200, 360);//绘制字体,使用转义字符换行 batch.end(); } @Override public void pause() { // TODO Auto-generated method stub } @Override public void resume() { // TODO Auto-generated method stub } @Override public void dispose() { // TODO Auto-generated method stub } }
效果: