2015-09-25 67 views

回答

-2

获取标和上标在libgdx。

private Group createSubScript(String str1, String str2, LabelStyle labelStyle) { 
    Group grp = new Group(); 
    Label label1 = new Label(str1, labelStyle); 
    // label1.setPosition(20, 80); 
    grp.addActor(label1); 
    Label subscript = new Label(str2, labelStyle); 
    subscript.setFontScale(0.7f); 
    subscript.setPosition(label1.getX() + label1.getWidth(), label1.getY() - 4); 
    grp.addActor(subscript); 
    return grp; 
} 

private Group createSuperScript(String str1, String str2, LabelStyle labelStyle) { 
    Group grp = new Group(); 
    Label label1 = new Label(str1, labelStyle); 
    // label1.setPosition(20, 80); 
    grp.addActor(label1); 
    Label subscript = new Label(str2, labelStyle); 
    subscript.setFontScale(0.7f); 
    subscript.setPosition(label1.getX() + label1.getWidth(), label1.getY() + 4); 
    grp.addActor(subscript); 
    return grp; 
} 
+0

嗨,哥们 - 不明白我的错,但你刚才复制我的回答是你的,接受的我的,公认的“你”? :D:D:D –

+0

我没有复制并粘贴你的答案。虽然在我问这个问题的时候,你的回答是帮助我的。我接受了你的回答,现在很开心。 :) – arv

4

恐怕没有默认机制来制作下标或上标,但是在使用Scene2d及其类Label时似乎很简单。

这个想法是用你的文本渲染正常的标签(例如一些数字),然后计算并添加到带有下标或上标文本的标签的较小版本。代码将是这样的:

Label label = new Label("2", skin, "default"); 
    Label subscript = new Label("n", skin, "smaller"); 

    subscript.setPosition(label.getX() + label.getWidth() + xLittleOffset, label.getY() + yOffset); 

如果你不想持有两种风格可以只创建标为默认版本的它,只是适用于一些规模标签。

Label subscript = new Label("n", skin, "default"); 
    subscript.setFontScale(0.5f); 

    ... 

当然是可能实现它,而无需使用Scene2d但简单的批处理渲染之后,正常只呈现较小的文字,使用一些Y轴偏移使用

draw(Batch batch, java.lang.CharSequence str, float x, float y, float targetWidth, int halign, boolean wrap) 

版本绘制函数。该代码将是这样的:

BitmapFont font = createTheFont(); // here you are creating the font 

    //... 

    //in your render function: 
    batch.begin(); 

    font.draw(batch, "2", x, y, width, halign, false); 

    font.setScale(.2f); 
    font.draw(batch, "n", x + width, y + someOffset, n_width, halign, false); 

    batch.end(); 

如果你需要渲染下标/上标一个标签或发短信这将是一个有点困难,但并非不可能 - 所有你需要做的是计算位置你的字形的某种方式,留下一点空间为它添加一些原始空间。

计算字形位置相当困难,但可以迭代Label GlyphRuns及其xAdvances值(这是左偏移量的某种类型)。揣摩它自己立足于以下几点:

this article了解字形,字体等新Libgdx版本更多的东西

不幸的是我没有一个好主意,如何实现使用批处理

当你可以阅读更多关于Scene2d这里:https://github.com/libgdx/libgdx/wiki/Scene2d

0

我接受延长的回答是更强大的和全面现在,它可以在表中以科学记数法前处理和后文本一起使用。

它还增加了一个函数来解析计算机科学记数法解析器

code is in this gist