作为一个游戏引擎,绘制文本信息必不可少,下面简单介绍一下libGDX引擎在绘制文字方面的方法:首先是第一种:使用它附带的工具Hiero来生成字库
工具:Hiero 下载地址:https://code.google.com/p/libgdx/downloads/list
配置好文字后,点File—Save as BMFont Files,生成两个文件fnt,png,拷贝到asserts文件夹。
fnt相当于一个小字库,而png则是这个小字库的绘制图,利用fnt中的配置对PNG图像的截取进行绘制。
首先介绍一下相关的类:
BitmapFont类 (文字容器)
API介绍:呈现位图字体,包括2个文件:一个图像文件textureregion,包含符号在anglecode
bmfont文本格式,描述了每个字形是图像文件。文本是使用一个SpriteBatch画。
功能用途:渲染静态文本,同时可以设置文字颜色,文字大小等。
使用方法:
我们可以手动设置文字大小和颜色以及旋转,这里使用函数设置是可以的,在Hiero里面也是可以设置的,同学们可以自行选择哪种方法设置,实例化对象过程中的第三个参数是管理翻转的
private BitmapFont font; 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);//设置颜色 font.setScale(1.0f);//字体比例大小 font.draw(batch,"小树", 330, 130);---------------------------------------------------------------------------------- (1)文字单行显示(重写了2个方法,5个参数逇可用于截取字符绘制)
方法:draw(SpriteBatch spriteBatch,,java.lang.CharSequence str, float x, float y, int start, int end) SpriteBatch类的对象 参数str 字符串 参数(x,y)普通坐标系(左下角)。 第五,六个参数,字符串截取,首编码是0---------------------------------------------------------------------------------- (2)文字换行显示(使用drawMultiLine方法可识别n换行) 方法:
drawMultiLine(SpriteBatch spriteBatch, java.lang.CharSequence str, float x, float y, float alignmentWidth ,BitmapFont.HAlignment alignment)alignment对齐方式,有LEFT、RIGHT、CENTER几种方式。 其中,LEFT的绘制原点是左上角、RIGHT的绘制原点是由上角、CENTER的绘制原点是每行文字中心,向两边展开。 float alignmentWidth,,对LEFT不起作用,只对RIGHT和CENTER起作用,对RIGHT来说就相当于把绘制原点平移,alignmentWidth的宽度,对CENTER来说相当于平移绘制原点平移alignmentWidth/2的宽度。 ---------------------------------------------------------------------------------- 附上例子源代码:
import com.badlogic.gdx.ApplicationListener; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.GL10; import com.badlogic.gdx.graphics.g2d.BitmapFont; import com.badlogic.gdx.graphics.g2d.SpriteBatch; public class MyGdxGame implements ApplicationListener{ private SpriteBatch batch; private BitmapFont font; @Override public void create() { batch = new SpriteBatch(); font = new BitmapFont(Gdx.files.internal("data/test.fnt"), Gdx.files.internal("data/test.png"),false); } @Override public void dispose() { batch.dispose(); } @Override public void render() { Gdx.gl.glClearColor(0,0,0, 0); Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT); batch.begin(); font.draw(batch,"LibGDX游戏引擎Fin字体测试程序", 20, 280);//普通绘制 font.draw(batch,"LibGDX游戏引擎Fin字体测试程序", 20, 300,0,10);//截取绘制 font.drawMultiLine(batch,"小树n引擎测试", 330, 230);//换行绘制,可识别n换行符号 batch.end(); } @Override public void resize(int width, int height) { } @Override public void pause() { } @Override public void resume() { } }