簡體   English   中英

在libgdx中居中對齊文本

[英]Center Justify Text in libgdx

我剛開始使用LibGdx,我已經想出了如何使用它來居中文本。 現在我遇到了中心對齊文本的問題。 我想知道是否有人可以提供幫助。 我附上了我的代碼以進行居中。 先感謝您。

package com.tutorials.game;

import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
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.GlyphLayout;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;

public class TextDemo extends ApplicationAdapter {
    SpriteBatch batch;
    BitmapFont font;
    String myText;
    GlyphLayout layout = new GlyphLayout();

    @Override
    public void create () {
        batch = new SpriteBatch();
        font = new BitmapFont(Gdx.files.internal("myFont.fnt"));
        myText = "I took one, one cause you left me\n"
               + "Two, two for my family\n"
               + "Three, three for my heartache";
        layout.setText(font,myText);
    }

    @Override
    public void render () {
        Gdx.gl.glClearColor(0, 0, 0, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        float x = Gdx.graphics.getWidth()/2 - layout.width/2;
        float y = Gdx.graphics.getHeight()/2 + layout.height/2;

        batch.begin();
        font.draw(batch,layout,x,y);//Center Text
        batch.end();
}

您可以使用以下setText()方法,並將targetWidth設置為屏幕寬度,Aligh.center,並將wrap設置為true。 此外,設置x = 0,使文本在整個屏幕中居中。

import com.badlogic.gdx.graphics.g2d.GlyphLayout;

public void setText(BitmapFont font,
                java.lang.CharSequence str,
                Color color,
                float targetWidth,
                int halign,
                boolean wrap)

更新示例:

@Override
public void create () {
    batch = new SpriteBatch();
    font = new BitmapFont(Gdx.files.internal("myFont.fnt"));
    myText = "I took one, one cause you left me\n"
           + "Two, two for my family\n"
           + "Three, three for my heartache";
    layout.setText(font,myText,Color.BLACK,Gdx.graphics.getWidth(),Align.center,true);
}

@Override
public void render () {
    Gdx.gl.glClearColor(0, 0, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    float x = 0;
    float y = Gdx.graphics.getHeight()/2 + layout.height/2;

    batch.begin();
    font.draw(batch,layout,x,y);//Center Text
    batch.end();
}

而不是使用font.draw方法,而是使用以下方法...

public TextBounds drawMultiLine (Batch batch, CharSequence str, float x, float y, float alignmentWidth, HAlignment alignment)

alignmentWidth是您希望文本占用的最大寬度。 不止於此,它將包裝。 如果你不想要包裝,將它設置為愚蠢的高度。

'alignment'是關鍵,它采用HAlignment枚舉,可以是LEFTRIGHTCENTER

batchstrxy參數與您正在執行的相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM