2015-04-26 110 views
1

我在LibGDX中很难绘制文本。每次我运行它,我都会看到一个黑色的窗户。我希望文本是白色的,但我什么都看不到。我尝试过找到大量的教程和vieos,但仍然无法实现。我的资产文件夹/字体中有一个vaild fnt和png文件。在LibGDX中绘制文本

package org.alexwebber.frc.stalk; 

import com.badlogic.gdx.ApplicationAdapter; 
import com.badlogic.gdx.ApplicationListener; 
import com.badlogic.gdx.Gdx; 
import com.badlogic.gdx.graphics.g2d.BitmapFont; 
import com.badlogic.gdx.graphics.g2d.SpriteBatch; 

public class Main extends ApplicationAdapter 
{ 
    public class HelloWorld implements ApplicationListener 
    { 
     private SpriteBatch batch; 
     private BitmapFont font; 

     @Override 
     public void create() 
     { 
      batch = new SpriteBatch(); 
      font = new BitmapFont(Gdx.files.internal("fonts/main.fnt"), 
          Gdx.files.internal("fonts/main.png"), false); 
     } 

     @Override 
     public void dispose() 
     { 
      batch.dispose(); 
      font.dispose(); 
     } 

     @Override 
     public void render() 
     { 
      batch.begin(); 
      font.setColor(255.0f, 255.0f, 255.0f, 255.0f); 
      font.draw(batch, "Hello World", 25, 160); 
      batch.end(); 
     } 

     @Override 
     public void resize(int width, int height) 
     { 
     } 

     @Override 
     public void pause() 
     { 
     } 

     @Override 
     public void resume() 
     { 
     } 
    } 
} 
+0

当你尝试'font = new BitmapFont();'时会发生什么?此外,对于所有四种颜色值,“1.0f”应该足够,而不是“255.0f”。 –

+0

@JamesSkemp同样的结果,没有什么 –

+0

我在应用程序中创建了一个虚拟页面,虽然我实现了'Screen',但它工作正常。我会尝试创建一个空的项目,看看我是否可以复制它。我想我有一个想法,但是... –

回答

3

东西可能会影响你的是去除清屏的:

public void render() { 
    Gdx.gl.glClearColor(0, 0, 0, 1); 
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 

    batch.begin(); 
    font.setColor(Color.WHITE); 
    font.draw(batch, "Hello world", 25, 160); 
    batch.end(); 
} 

您也可以尝试通过Color.WHITE如上。如果您使用的Android设备具有极高的屏幕分辨率,则可能无法看到文本行。

通过a Desktop application进行测试可能也是一个好主意,因为您可以调整屏幕分辨率,使文本尺寸更大。