Question

Est-ce que quelqu'un sait comment utiliser une police TTF dans libGDX ?J'ai regardé autour de moi et j'ai vu des choses à propos de StbTrueTypeFont, mais cela ne semble pas figurer dans la dernière version.

MODIFIER:J'ai trouvé la police StbTrueType, le fichier jar se trouve dans le répertoire des extensions.Je l'ai ajouté à mon projet.Il ne me reste plus qu'à comprendre comment l'utiliser.Des exemples ?

Était-ce utile?

La solution

Oui, vous devrez certainement ajouter le gdx-stb-truetype bocaux à votre projet comme vous l'avez indiqué dans votre modification. Voici comment vous l'utiliserez, assez discret ...

Vous devez d'abord déclarer votre BitmapFont Et les personnages que vous utiliserez ...

BitmapFont font;
public static final String FONT_CHARACTERS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789][_!$%#@|\\/?-+=()*&.;,{}\"´`'<>";

Ensuite, vous devez créer la police ...

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);

Vous pouvez jouer avec les arguments auxquels vous passez createBitmapFont() Et vous verrez ce qu'ils font.

Ensuite, pour rendre la police, vous le feriez comme vous le faites normalement ...

batch.begin();
font.draw(batch, "This is some text", 10, 10);
batch.end();

Autres conseils

Utilisez l'extension GDX-Freetype:

FreeTypeFontGenerator generator = new FreeTypeFontGenerator(fontFile);
BitmapFont font15 = generator.generateData(15);
BitmapFont font22 = generator.generateData(22);
generator.dispose();

"Pour utiliser GDX-Freetype, prenez les derniers nocturnes, lien gdx-freetype.jar et gdx-freetype-natives.jar À votre projet de bureau, lien gdx-freetype.jar à votre projet Android et copier le armeabi/libgdx-freetype.so et armeabi-v7a/libgdx-freetype.so Fichiers à votre projet Android libs/ dossier, tout comme avec le libgdx.so des dossiers."

La source: http://www.badlogicgames.com/wordpress/?p=2300

J'ai beaucoup recherché et trouvé cette méthode de travail:

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

Utilisez-le si vous avez échoué des réponses essayées ci-dessus,libgdx freetype wiki pour référence.

Cela fonctionne sur un téléphone clone S4 :Pinewood est une police téléchargée, dans le dossier Assets.Voir la structure des dossiers ci-dessous.

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() {
    }

}

enter image description here

Vous devez utiliser la bibliothèque FreetyPefont. github

1.Alle la page GitHub Dites, pour les projets utilisant Gradle, ajoutez ces dépendances:

Dépendance de base:

compile "com.badlogicgames.gdx:gdx-freetype:$gdxVersion"

Dépendance de bureau:

compile "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-desktop"

Dépendance 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"

Pour plus de détails et de plates-formes, voir cette page

Si vous n'utilisez pas Gradle, voir cette

2.La bibliothèque ajoutée à votre projet, vous pouvez l'utiliser comme ceci:

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!

et mettez myfont.ttf dans le dossier Core Assets

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top