2012-12-27 23 views
2

我正在試驗TextField並在翻轉字體時遇到問題。我的拼寫相機設置爲yDown = true。使用這些設置,文本被翻轉,所以我想出了一個解決方案,將BitmapFont的翻轉構造函數參數設置爲true。但是,當我嘗試下面的代碼。文字「Hello World」正在渲染九個邊框之外。下面是它的一個screenshotlibGDX:帶有BitmapFont的文本字段(true)呈現文字在邊框外

screenshot

TextFieldStyle tfs = new TextFieldStyle(); 
    NinePatch np = new NinePatch(new Texture(Gdx.files.internal(ResourceConstants.IMAGE_NINEPATCH)), 8, 8, 8, 8); 

    tfs.font = new BitmapFont(true); 
    tfs.fontColor = Color.BLACK; 
    tfs.background = np; 

    TextField tf = new TextField("Hello World", tfs); 
    tf.x = 50; 
    tf.y = 90; 
    tf.width = 100; 
    tf.height = 32; 
    addActor(tf); 
    tf.pack(); 

回答

0

的問題是在平局被稱爲上TFS的方法(這是座標設置)。字體的笛卡爾y座標與其他GDX對象相反,我認爲排版需要以某種方式工作。

所以,如果你

myFont.draw(spriteBatch, "Hello World", 0, 0); 

然後你會想到就在底部左側要繪製的消息。但這是錯誤的!字體本身是從左上角繪製的,所以您的消息將被繪製在屏幕的左下角,底部邊緣下方。 我們甚至不能看到該消息。

但是,如果我們換個座標:

myfont.draw(spriteBatch, "box2d x: " + String.format("%2.2f", x), 10, 20); 

我們將看到的消息,因爲我們給它顯示出足夠的空間在y軸負方向。

鑑於行爲不當的字體在Y方向行爲不當,並且低於您期望的,我懷疑上述誤解確實是問題所在。

如果您不控制bitmapfont本身的任何繪圖座標,並且這完全由TextField類處理,並且字體總是超出範圍,不管文本字段的大小如何,則I會懷疑GDX中的錯誤。你可以嘗試詢問論壇。

0

我有同樣的效果。如果添加TextField,而此前,例如,添加CheckBox和這個小工具集setScale,然後你會看到這樣的效果

TextField textfield = new TextField("Text field",skin); 
stage.addActor(textfield); 

CheckBoxStyle checkBoxStyle = skin.get(CheckBoxStyle.class); 
checkBoxStyle.font.getData().setScale(2f); 

CheckBox checkbox = new CheckBox("CheckBox", checkBoxStyle); 
stage.addActor(checkbox);