2015-09-25 71 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