2017-04-21 17 views
0

私がこれまで行ってきたやり方は、同じフォントをコピーして別の名前で保存し、別のパラメータで読み込むことです。私はLibGDXでアプリを開発しようとしており、フォントを別のファイルとして保存すると、必要以上に多くのメモリが必要になります。 1つのフォントを複数回ロードする方法はありませんか?毎回異なるパラメータを使用しますか?異なるパラメータでTrueTypeFontを読み込む方法は? LibGDX

+0

あなたが同じフォントをコピーすることによって何を意味するのですか? BitmapFontの '.fnt'ファイルや' .ttf'ファイルを扱っていますか? ? – Aryan

+0

.ttf。異なるパラメータのフォントを使用するには、既存のものをコピーして別の名前の同じフォルダに貼り付け、他のパラメータを使ってロードします。 – vladutelu

+0

同じ.ttfファイルを使用し、FontTypeParameter属性のみを変更して別のフォントを生成できます。 – Aryan

答えて

0

この例を見てみると、異なるサイズのBitmapFontオブジェクトのリストは、単にFreeTypeFontGenerator.FreeTypeFontParameterという属性を変更するだけで作成しています。

public class MainGame extends Game { 

    SpriteBatch spriteBatch; 
    BitmapFont font[]; 
    OrthographicCamera camera; 

    @Override 
    public void create() { 

     camera=new OrthographicCamera(); 
     camera.setToOrtho(false,400,640); 
     spriteBatch = new SpriteBatch(); 

     int size[]=new int[]{5,8,10,13,15,20,30,40,50,60}; 

     font=new BitmapFont[size.length]; 
     FreeTypeFontGenerator generator = new FreeTypeFontGenerator(Gdx.files.internal("BUBBLEGUM.TTF")); 
     FreeTypeFontGenerator.FreeTypeFontParameter parameter = new FreeTypeFontGenerator.FreeTypeFontParameter(); 

     parameter.color = Color.WHITE; 
     parameter.magFilter = Texture.TextureFilter.Linear; // used for resizing quality 
     parameter.minFilter = Texture.TextureFilter.Linear; 

     for(int i=0;i<size.length;i++){ 
      parameter.size=size[i]; 
      font[i]=generator.generateFont(parameter); 
      font[i].getRegion().getTexture().setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear); 
      font[i].setColor(1.0f, 0.0f, 0.0f, 1.0f); 
     } 

     generator.dispose(); // Don't forget to dispose 
    } 

    @Override 
    public void render() { 

     Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 
     Gdx.gl.glClearColor(1,1,0,1); 

     spriteBatch.setProjectionMatrix(camera.combined); 
     spriteBatch.begin(); 
     for (int i=0;i<font.length;i++) 
      font[i].draw(spriteBatch,"LIBGDX FONT",10,100+i*55); 
     spriteBatch.end(); 
    } 

    @Override 
    public void resize(int width, int height) { 
     camera.setToOrtho(false,width,height); 
    } 

    @Override 
    public void dispose() { 
     spriteBatch.dispose(); 
     for(BitmapFont bmfont:font) 
       bmfont.dispose(); 

    } 
} 

EDIT

https://github.com/libgdx/libgdx/blob/master/tests/gdx-tests/src/com/badlogic/gdx/tests/extensions/FreeTypeFontLoaderTest.java

+0

しかし、私のフォントをAsset Managerで読み込んでいても、同じことをしますか? – vladutelu

+0

はい、できます。最後にビットマップフォントを使用して、AssetManagerに読み込みます。 – Aryan

+0

FreeTypeFontGeneratorではなく、FreeTypeFontLoaderを使用してフォントとパラメータを読み込みます。私はそれを変更する必要がありますか?アセットマネージャからフォントをロードすると、フォントの場所を尋ねるので、同じフォントをどのように読み込むのですか?パラメータは異なりますか?多くの質問をして申し訳ありませんが、私は非常に混乱しています – vladutelu

関連する問題