在上一篇的文章中,我们介绍了Hiero这个非常好用工具的使用,但是LIbgdx的BitmapFont不支持多图,常用汉字
3500个,你总不能用hiero自己做吧,那怎么办呢?这其实微软早就解决这个问题了,它给我们提供了这个TTF字
库,保存汉字字,方便我们使用。
一、FreeType的使用
1、打开解压好的0.9.8版的包,找到里面的extensions文件夹
打开后,再点击进入gdx-freetype文件夹
找到gdx-freetype.jar 文件和armeabi、armeabi-v7a两个文件夹
2、找到之后,将gdx-freetype.jar文件和这两个文件夹下的libgdx-freetype.so文件复制粘贴到核心项目的libs文件夹中,如图所示:
其他的Jar包和so文件都是之前的项目必须要添加的。
3、可能大家会好奇这个libgdx.so是什么文件,为什么有就可以运行.TTF的文件了呢?而没有他就一直报错呢?
package com.example.mylibgdxfont03; 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 MyGame implements ApplicationListener { private BitmapFont font; private FreeTypeFontGenerator generator; private FreeTypeBitmapFontData fontData; private SpriteBatch batch; @Override public void create() { generator = new FreeTypeFontGenerator(Gdx.files.internal("testfont.ttf")); fontData = generator.generateData(25, generator.DEFAULT_CHARS + "晚风把荣华吹散,名利是如此浅薄。—我一条寻水的鱼!", false);// 这里需要把你要输出的字,全部写上,前提是不能有重复的字。 font = new BitmapFont(fontData, fontData.getTextureRegion(), false); font.setColor(Color.PINK); batch = new SpriteBatch(); } @Override public void dispose() { font.dispose(); generator.dispose(); batch.dispose(); } @Override public void render() { Gdx.gl.glClearColor(1, 1, 1, 1); Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT); batch.begin(); font.drawMultiLine( batch, "Hello Everyone: \n \n晚风把荣华吹散,\n名利是如此浅薄。", 50, 220); font.draw(batch, "——我是一条寻水的鱼!", 150, 90); batch.end(); } @Override public void resize(int width, int height) { } @Override public void pause() { } @Override public void resume() { } }