我使用Freetype,工具和intellej的box2d创建了我的项目,并尝试在android studio中运行:
BitmapFont font = new BitmapFont();
它给了我一个空指针异常。我尝试过手动将字体放入assests文件夹中,但这没有帮助。我能够成功运行默认项目(红色背景和图片),但从未成功运行过该行。
最佳答案
可能的原因可能是您正在初始化本地BitmapFont
而不是在render方法中使用的全局。
public class MyGdxGame extends Game {
Texture texture;
SpriteBatch spriteBatch;
BitmapFont font;
@Override
public void create () {
BitmapFont font=new BitmapFont(); // You initialise local, global is still Null
texture=new Texture("badlogic.jpg");
spriteBatch=new SpriteBatch();
}
@Override
public void render() {
super.render();
Gdx.gl.glClearColor(1,1,1,1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
spriteBatch.begin();
spriteBatch.draw(texture,100,100);
font.draw(spriteBatch,"HELLO WORLD",100,100); // Now here NPE
spriteBatch.end();
}
}
默认构造函数
BitmapFont font=new BitmapFont();
内部创建两个
FileHandle
,其中一个用于字体文件
com/badlogic/gdx/utils/arial-15.fnt
和另一个imageimage com/badlogic/gdx/utils/arial-15.png
。我不认为,它抛出NPE可能是其他Exception
。