libgdx [Font]

文字显示

1.图片方式显示文字
2.直接显示TTF或OTF字体文字

package com.mygdx.game;

import com.badlogic.gdx.Application;
import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.assets.AssetManager;
import com.badlogic.gdx.assets.loaders.FileHandleResolver;
import com.badlogic.gdx.assets.loaders.resolvers.InternalFileHandleResolver;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator;
import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGeneratorLoader;
import com.badlogic.gdx.graphics.g2d.freetype.FreetypeFontLoader;
import com.badlogic.gdx.utils.Align;

public class MyGdxGame extends ApplicationAdapter {

    static final String TAG = "MyGdxGame";

    int screenWidth, screenHeight;
    int iconWidth = 128;
    int iconHeight = 256;
    int padding = 100;

    AssetManager manager;

    SpriteBatch batch;
    Texture texture;
    TextureRegion textureRegion;
    Sprite sprite;

    BitmapFont font;
    String appType = "";
    String fontTestStr = "中央定调一件大事:拆除住宅小区围墙";
    String fontFile = "HiraginoSansGBW3.otf";
    String ttfFontTestStr = "这些文字来自字体文件,苹果丽黑:" + fontFile;

    FreeTypeFontGenerator fontGenerator;
    BitmapFont ttfFont;

    @Override
    public void create () {

        screenWidth = Gdx.graphics.getWidth();
        screenHeight = Gdx.graphics.getHeight();

        Gdx.app.log(TAG, "create screenWidth: " + screenWidth + " screenHeight: " + screenHeight);

        if(Gdx.app.getType() == Application.ApplicationType.Desktop)
                appType="桌面";
        else if(Gdx.app.getType() == Application.ApplicationType.Android)
                appType="安卓";
        else if(Gdx.app.getType() == Application.ApplicationType.WebGL)
                appType="网页";

        manager = new AssetManager();


        batch = new SpriteBatch();

        texture = new Texture(Gdx.files.internal("data/animation.png"));

        textureRegion = new TextureRegion(texture, 0, 0, iconWidth, iconHeight);
        //textureRegion = new TextureRegion(texture, iconWidth, iconHeight, 0-iconWidth, -iconHeight);

        sprite = new Sprite(textureRegion);
        sprite.setSize(iconWidth * 2, iconHeight * 2);
        sprite.setOrigin(sprite.getWidth() / 2, sprite.getHeight() / 2);
        //sprite.setOrigin(0, 0);
        //sprite.setRotation(-30);
        sprite.setPosition(padding + iconWidth + iconWidth*2, padding);
        //sprite.setColor(1, 0, 1, 1);

        font = new BitmapFont(Gdx.files.internal("data/test_chinesefont.fnt"), Gdx.files.internal("data/test_chinesefont.png"), false);


        fontGenerator = new FreeTypeFontGenerator(Gdx.files.internal("data/"+fontFile));
        FreeTypeFontGenerator.FreeTypeFontParameter parameter = new FreeTypeFontGenerator.FreeTypeFontParameter();
        parameter.size = 40;
        parameter.color = Color.BLACK;
        parameter.characters += ttfFontTestStr;
        ttfFont = fontGenerator.generateFont(parameter);
        fontGenerator.dispose();

    }
    @Override
    public void dispose () {
        manager.dispose();
        batch.dispose();
        texture.dispose();
    }
    @Override
    public void render () {
        Gdx.gl.glClearColor(1, 1, 0, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        batch.begin();
        batch.draw(texture, padding, padding, iconWidth, iconHeight);
        batch.draw(textureRegion, padding + iconWidth, padding, iconWidth * 2, iconHeight * 2);
        sprite.draw(batch);
        font.draw(batch, appType, padding, screenHeight);//single line
        font.draw(batch, fontTestStr, padding, screenHeight - padding, 3*padding, Align.left, true);//true for mutiline

        ttfFont.draw(batch, ttfFontTestStr, padding, screenHeight - 2*padding, screenWidth/3, Align.left, true);//false -> not mutiline

        batch.end();


    }
}

这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值