Что такое targetWidth в glyphLayout - PullRequest
0 голосов
/ 01 июля 2018

Что конкретно означает здесь параметр targetWidth и как он связан с параметром wrap?

public GlyphLayout (BitmapFont font, CharSequence str, Color color, float targetWidth, int halign, boolean wrap) {
    setText(font, str, color, targetWidth, halign, wrap);
}

Ответы [ 2 ]

0 голосов
/ 07 июля 2018

Целевая ширина - максимальная максимальная ширина, которой будет текст до того, как он будет обернут, обрезан или иным образом изменен из одной строки.

например. Рассмотрим строку шириной 500 (когда нарисовано). При целевой ширине 250 он будет заключен в ~ 250 в 2 строки (если выполняется перенос).

0 голосов
/ 02 июля 2018

Из документа:

targetWidth: Ширина, используемая для выравнивания, переноса строк и усечения. Может быть нулем, если эти функции не используются.

wrap: Если true, то (слово или единица текста) автоматически переносится на новую строку при достижении поля или для соответствия встроенным функциям.

Если false, текст будет переноситься только там, где он содержит новые строки (\ n).

EDIT

Тестовый код: практическая демонстрация того, как targetWidth и wrap работает в конструкторе GlyphLayout.

public class MyGdxGame extends ApplicationAdapter {

    private GlyphLayout glyphLayout[];
    private BitmapFont bitmapFont;
    private float targetWidth=250;
    private ShapeRenderer shapeRenderer;
    private SpriteBatch spriteBatch;
    private float xPos[]={450,450,450,30,450,880};
    private float yPos[]={550,480,410,340,340,340};

    @Override
    public void create () {

        spriteBatch=new SpriteBatch();
        shapeRenderer=new ShapeRenderer();
        shapeRenderer.setAutoShapeType(true);

        bitmapFont=new BitmapFont(Gdx.files.internal("skin/poet.fnt"));

        glyphLayout=new GlyphLayout[6];
        glyphLayout[0]=new GlyphLayout(bitmapFont, "LOADING SCREENsssssssssssssssssssssssssssssssssssss", Color.BLACK, targetWidth, Align.left, false);
        glyphLayout[1]=new GlyphLayout(bitmapFont, "LOADING SCREENsssssssssssssssssssssssssssssssssssss", Color.BLACK, targetWidth, Align.right, false);
        glyphLayout[2]=new GlyphLayout(bitmapFont, "LOADING SCREENsssssssssssssssssssssssssssssssssssss", Color.BLACK, targetWidth, Align.center, false);
        glyphLayout[3]=new GlyphLayout(bitmapFont, "LOADING SCREENsssssssssssssssssssssssssssssssssssss", Color.BLACK, targetWidth, Align.left, true);
        glyphLayout[4]=new GlyphLayout(bitmapFont, "LOADING SCREENsssssssssssssssssssssssssssssssssssss", Color.BLACK, targetWidth, Align.right, true);
        glyphLayout[5]=new GlyphLayout(bitmapFont, "LOADING SCREENsssssssssssssssssssssssssssssssssssss", Color.BLACK, targetWidth, Align.center, true);
    }

    @Override
    public void render() {

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

        spriteBatch.begin();
        for (int i=0;i<glyphLayout.length;i++)
            bitmapFont.draw(spriteBatch, glyphLayout[i], xPos[i], yPos[i]);
        spriteBatch.end();

        shapeRenderer.begin();
        shapeRenderer.setColor(Color.BLUE);
        shapeRenderer.set(ShapeRenderer.ShapeType.Filled);
        for (int i=0;i<glyphLayout.length;i++)
            shapeRenderer.rectLine(xPos[i], yPos[i], xPos[i] + targetWidth, yPos[i], 3f);
        shapeRenderer.end();
    }

    @Override
    public void dispose () {
        bitmapFont.dispose();
        shapeRenderer.dispose();
        spriteBatch.dispose();
    }
}

Выход:

enter image description here

...