以适当的方式对齐图像内的标签文本-LibGdx

时间:2017-05-30 06:44:12

标签: libgdx scene2d

我想在盒子图像中写下分数。

首先我将盒子放在那个地方,然后我使用这样的标签在它上面添加了得分字符串。

private void drawScoreBoxes() {
    scoreImage = new Image(scoreTexture);
    stage.addActor(scoreImage);
    scoreImage.setPosition(UiConstants.BOX_POS_X,UiConstants.BOX_POS_Y2);
}

private void drawScore() {

        Label.LabelStyle scoreStyle = new Label.LabelStyle();// style
        scoreStyle.font = game.font2;
        scoreLabel2 = new Label(scoreController.getScoreString(), scoreStyle);// label
        scoreLabel2.setPosition(scoreImage.getX()+scoreImage.getWidth()/2,scoreImage.getY());       
    }

分数字符串应恰好位于方框图像的中间。在这种情况下,当分数位数增加时,字符串对齐不正确。

我如何始终将它对齐?

我找到了getLabelAlign(),setAlignment(alignment)等方法。 但我不知道如何正确使用它。

2 个答案:

答案 0 :(得分:2)

您有两种选择:  1.使用TextButton:

Drawable scoreDrawable = new TextureRegionDrawable(new TextureRegion(scoreTexture));

TextButtonStyle textButtonStyle = new TextButtonStyle( scoreDrawable, scoreDrawable, scoreDrawable, font );

TextButton tb = new TextButton( scoreController.getScoreString() );

tb.setDisabled( true );

或2.设置标签边界并对齐文本:

    LabelStyle labelStyle = new LabelStyle( font, Color.BLACK );

    Label scoreLabel = new Label( scoreController.getScoreString(), labelStyle );

    scoreLabel.setBounds( scoreImage.getX(), scoreImage.getY(), scoreImage.getWidth(), scoreImage.getHeight() );

    scoreLabel.setAlignment( Align.center );

答案 1 :(得分:1)

使用TextButton代替Image + Label

TextButton是一个包含Label的按钮,您可以将Image可绘制部分传递给按钮,该按钮显示为标签的背景部分。

button = new TextButton("Button1", textButtonStyle);
stage.addActor(button);

一个TextButton需要一个字符串来渲染和一个ButtonStyle,在这种情况下是一个TextButtonStyle,它基本上是一个包含按钮所有信息的类(字体,可绘制时可绘制而不按下) ,可以在按下时绘制等等)。