我使用Freetype,工具和box2d为intellej创建了我的项目,并尝试在android studio中运行:
BitmapFont font = new BitmapFont();
它给了我一个空指针异常。我已经尝试手动将字体放在assests文件夹中,但这没有帮助。我能够成功运行默认项目(红色背景和图片),但从未成功运行该行。
答案 0 :(得分:2)
可能的原因可能是您正在初始化本地BitmapFont
而不是您在渲染方法中使用的全局。
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
和另一个用于imageFile com/badlogic/gdx/utils/arial-15.png
。我不认为,它抛出NPE可能是其他Exception
。