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

qsuron 发布于 2014-02-28 libGDX框架 18 次阅读 无~ 778 字 预计阅读时间: 4 分钟


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

}
代码敲的累了,换个中文悠闲悠闲。
最后更新于 2014-02-28