参数targetWidth
在这里的确切含义是什么以及它与wrap
参数有什么关系?
public GlyphLayout (BitmapFont font, CharSequence str, Color color, float targetWidth, int halign, boolean wrap) {
setText(font, str, color, targetWidth, halign, wrap);
}
参数targetWidth
在这里的确切含义是什么以及它与wrap
参数有什么关系?
public GlyphLayout (BitmapFont font, CharSequence str, Color color, float targetWidth, int halign, boolean wrap) {
setText(font, str, color, targetWidth, halign, wrap);
}
来自文档:
targetWidth :用于对齐、换行和截断的宽度。如果不使用这些功能,则可能为零。
wrap :如果为真,那么(一个单词或文本单元)将在到达边距时自动转移到新行,或适应嵌入的特征。
如果为 false,则文本将仅在包含换行符 (\n) 的地方换行。
测试代码:实际演示,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();
}
}
输出 :
目标宽度是文本在被换行、截断或以其他方式从单行更改之前的最大宽度。
例如,考虑一个宽度为 500 的字符串(绘制时)。目标宽度为 250,它将在 ~250 处被包裹成 2 行(如果 wrap 为真)。