有人知道我如何在libGDX中使用TTF字体吗?我找过并看到一些关于StbTrueTypeFont的东西,但它似乎不在最新版本中。
编辑:我找到了StbTrueType字体相关的内容,jar文件位于扩展目录中。我已将其添加到我的项目中。现在我只需要弄清如何使用它。有示例吗?
你需要将gdx-stb-truetype
的jar包添加到你的项目中,就像你在编辑中所述的那样。这里是如何使用它的,非常简单明了...
首先,你需要声明你要使用的BitmapFont
以及字符...
BitmapFont font;
public static final String FONT_CHARACTERS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789][_!$%#@|\\/?-+=()*&.;,{}\"´`'<>";
接下来,您需要创建字体...
font = TrueTypeFontFactory.createBitmapFont(Gdx.files.internal("font.ttf"), FONT_CHARACTERS, 12.5f, 7.5f, 1.0f, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
font.setColor(1f, 0f, 0f, 1f);
你可以尝试调整传递给 createBitmapFont()
的参数,看看它们的作用。
然后按照通常方式渲染字体即可...
batch.begin();
font.draw(batch, "This is some text", 10, 10);
batch.end();
com.badlogic.gdx.scenes.scene2d.ui.Label
等 UI 元素中使用这个字体?是否有可能实现? - uni使用 gdx-freetype 扩展库:
FreeTypeFontGenerator generator = new FreeTypeFontGenerator(fontFile);
BitmapFont font15 = generator.generateData(15);
BitmapFont font22 = generator.generateData(22);
generator.dispose();
"要使用gdx-freetype,需要下载最新的nightlies版本,将 gdx-freetype.jar
和 gdx-freetype-natives.jar
文件链接到你的桌面工程中,将 gdx-freetype.jar
文件链接到你的安卓工程中,并将 armeabi/libgdx-freetype.so
和 armeabi-v7a/libgdx-freetype.so
文件复制到安卓工程的 libs/
文件夹中,就像处理 libgdx.so
文件一样。"
setColor(r, g, b, a)
了吗?http://libgdx.l33tlabs.org/docs/api/com/badlogic/gdx/graphics/g2d/BitmapFont.html - TalkLittle我做了很多研究,并找到了这个有效的方法:
FreeTypeFontGenerator generator = new FreeTypeFontGenerator(Gdx.files.internal("myfont.ttf"));
FreeTypeFontParameter parameter = new FreeTypeFontParameter();
parameter.size = 12; // font size
BitmapFont font12 = generator.generateFont(parameter);
generator.dispose(); // avoid memory leaks, important
如果您尝试了以上的答案仍然失败,请使用libGDX Freetype Wiki以供参考。
import android.util.Log;
import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.files.FileHandle;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator;
public class Game implements ApplicationListener {
private SpriteBatch mSpriteBatch;
private Texture textureBackground;
private BitmapFont mBitmapFont;
public void create() {
Gdx.graphics.setContinuousRendering(false);
Gdx.graphics.requestRendering();
mSpriteBatch = new SpriteBatch();
Texture.setEnforcePotImages(false);
textureBackground = new Texture(Gdx.files.internal("background.jpg"));
FileHandle fontFile = Gdx.files.internal("Pinewood.ttf");
FreeTypeFontGenerator generator = new FreeTypeFontGenerator(fontFile);
mBitmapFont = generator.generateFont(150);
generator.dispose();
mBitmapFont.setColor(0.9f, 0.5f, 0.5f, 1);
Log.e("Game", "mBitmapFont.getScaleX() : "+mBitmapFont.getScaleX() + ", mBitmapFont.getScaleY() "+mBitmapFont.getScaleY());
}
public void render() {
Log.e("Game", "render()");
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT); // This cryptic line clears the screen.
mSpriteBatch.begin();
// Drawing goes here!
mSpriteBatch.draw(textureBackground, 0, 0);
mBitmapFont.draw(mSpriteBatch, "FPS:"+Gdx.graphics.getFramesPerSecond(), 110, 260);
mSpriteBatch.end();
}
public void resize(int width, int height) {
}
public void pause() {
}
public void resume() {
}
public void dispose() {
}
}
你需要使用FreeTypeFont库。github
1.根据Github页面的说明,对于使用gradle的项目,请添加以下依赖项:
核心依赖项:
compile "com.badlogicgames.gdx:gdx-freetype:$gdxVersion"
桌面应用程序依赖:
compile "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-desktop"
Android依赖项:
compile "com.badlogicgames.gdx:gdx-freetype:$gdxVersion"
natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-armeabi"
natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-armeabi-v7a"
natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-arm64-v8a"
natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-x86"
natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-x86_64"
更多细节和平台请参见this页面
如果您不使用Gradle,请参见this
2.在将库添加到项目后,您可以像这样使用它:
FreeTypeFontGenerator generator = new FreeTypeFontGenerator(Gdx.files.internal("myfont.ttf"));
FreeTypeFontParameter parameter = new FreeTypeFontParameter();
parameter.size = 12;
BitmapFont font12 = generator.generateFont(parameter); // font size 12 pixels
generator.dispose(); // don't forget to dispose to avoid memory leaks!
并将myfont.ttf放入核心资产文件夹中
gdx-stb-truetype-natives.jar
和gdx-stb-truetype.jar
。将它们添加到你的主项目中,并确保将它们添加到构建路径中。 - Alex_Hyzer_Kenoyer