LibGDX游戏引擎-4-文字绘制(TTF-FreeType)

回执文字也有第二种方式,使用TTF字体,但是需要外加扩展包,因为如果你通过step-ui建立项目,默认是不加入这个包的

需要手动导入,导入方法:

(1)打开解压好的0.9.9版的包,extensions文件夹,gdx-freetype文件夹,

找到 gdx-freetype.jar 和 gdx-freetype-natives.jar。

(2)扩展包导入

首先,核心代码项目,将 gdx-freetype.jar 复制并粘贴到核心代码项目的lib文件夹,

然后将其添加到Referenced Libraries 库中。

其次,安卓项目,将 gdx-freetype.jar 复制并粘贴到 -android 项目的lib文件夹,

然后将其添加到Referenced Libraries 库中。

最后,桌面项目,将 gdx-freetype-natives.jar 复制、粘贴到 -desktop 项目的lib文件夹中,

然后加入到Referenced Libraries中。

(3)将 gdx-freetype 文件夹中,armeabi 和 armeabi-v7a 两个文件夹复制到 -android 项目中,

位于libs/,替换掉原有的armeabi和armeabi-v7a文件夹。

使用方法:

import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator;
import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator.FreeTypeBitmapFontData;

public class MyGdxGame implements ApplicationListener{
private SpriteBatch batch;
private BitmapFont font;
private FreeTypeFontGenerator generator;//字体生产者
private FreeTypeBitmapFontData fontData;//字体加工者

@Override
public void create() {
batch = new SpriteBatch();
generator = new FreeTypeFontGenerator(Gdx.files.internal(“data/MyFont.ttf”));
fontData = generator.generateData(25,”bBdDfFgGiIlLnNtTxX 小树游戏引擎字体测试程序!”,false);
font = new BitmapFont(fontData,fontData.getTextureRegions(),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游戏引擎Fnt字体测试程序”, 20, 280);//普通绘制
font.draw(batch,”LibGDX游戏引擎Fnt字体测试程序”, 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() {
}

}

PS:libgdx.so文件

答:一般来说.so文件就是常说的动态链接库, 是C或C++编译出来的,在可执行文件装载时或运行时,

由Android操作系统的程序来加载库。作为加载过程的一部分它负责解析外部引用(比如库)。

在不同的系统上,可执行文件包含一个叫做import directory的表,该表的每一项包含一个库的名字。

根据表中记录的名字,装载程序所需要的库,然后将其加载到内存中,之后根据加载库后确定的库的地址

更新可执行程序,更新后调用库中的函数或引用库中的数据。这就是.so文件的原理作用。
FreeTypeFontGenerator 类
TTF字体生产者


API定义:TTF字体的发生器(生产者)其实 FreeTypeFontGenerator 和 Texture 是一样的,

都只是一个容器,负责盛装“.ttf”的文件然后备用。


功能用途:负责保存和解析“.ttf”格式文件这个和Texture类是一样的。


使用方法:FreeTypeFontGenerator 一般都配合 FreeTypeBitmapFontData 来使用。


PS:这里特别声明一下,TTF文件一定要用英文名.


FreeTypeBitmapFontData 类
TTF字体加工者


API定义:负责处理FreeTypeBitmapFontData的数据的 (加工者)


功能用途:负责处理FreeTypeGenerator的数据 和 BitmapFontData 类似


使用方法:

FreeTypeBitmapFontData fontData = freetypeGenerator.generateData(

int Size, some Chinese String, false);


类的几个参数和重要的成员变量,第一个是字号的大小,

第二个是中文的字符串(即汉字,需要加引号),第三个翻转状态。


DEFAULT_CHARS:

FreeTypeBitmapFontData 有一个重要成员变量 DEFAULT_CHARS ,

它是作者Mario给我们封装好的基本英文字符打开FreeTypeBitmapFontData

你会看见如下图的变量赋值,这样即使”.TTF”字库中没有英文字符,我们也可以输出英文字符的,

因为作者已经给我们打包了。