LibGDX游戏引擎-3-文字绘制(Hiero)

作为一个游戏引擎,绘制文本信息必不可少,下面简单介绍一下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() {
    }

}