Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java AndEngine字体加载:NullPointerException_Java_Android_Nullpointerexception_Andengine - Fatal编程技术网

Java AndEngine字体加载:NullPointerException

Java AndEngine字体加载:NullPointerException,java,android,nullpointerexception,andengine,Java,Android,Nullpointerexception,Andengine,好的,我一直在遵循这个教程并实现我的游戏。但是,我在font对象上得到了一个空指针异常。我已经在assets/font文件夹中加载了font.ttf文件,下面是代码。请帮忙。谢谢 在我的游戏场景类中: private void createHUD() { gameHUD = new HUD(); scoreText = new Text(20, 420, resourcesManager.font, "Score: 0123456789", new Text

好的,我一直在遵循这个教程并实现我的游戏。但是,我在font对象上得到了一个空指针异常。我已经在assets/font文件夹中加载了font.ttf文件,下面是代码。请帮忙。谢谢

在我的游戏场景类中:

      private void createHUD()
 {
      gameHUD = new HUD();
      scoreText = new Text(20, 420, resourcesManager.font, "Score: 0123456789", new TextOptions(HorizontalAlign.LEFT), vbom);
      scoreText = new Text(20, 420,mFont, "Score: 0123456789", new TextOptions(HorizontalAlign.LEFT), vbom);
      scoreText.setSkewCenter(0, 0);    
      scoreText.setText("Score: 0");
      gameHUD.attachChild(scoreText);
      camera.setHUD(gameHUD);
}
在我的ResourcesManager类中:

     private void loadMenuFonts()
    {
     FontFactory.setAssetBasePath("font/");
         final ITexture mainFontTexture = new BitmapTextureAtlas(activity.getTextureManager(), 256, 256, TextureOptions.BILINEAR);

     font = FontFactory.createStrokeFromAsset(activity.getFontManager(), mainFontTexture, activity.getAssets(), "font.ttf", 50, true, Color.WHITE, 2, Color.BLACK);
     font.load();
     }
以及logcat:

     05-12 15:57:37.478: E/AndroidRuntime(20431): java.lang.NullPointerException:    Attempt to invoke interface method 'org.andengine.opengl.font.Letter   org.andengine.opengl.font.IFont.getLetter(char)' on a null object reference
     05-12 15:57:37.478: E/AndroidRuntime(20431):   at org.andengine.opengl.font.FontUtils.measureText(FontUtils.java:95)
     05-12 15:57:37.478: E/AndroidRuntime(20431):   at org.andengine.opengl.font.FontUtils.measureText(FontUtils.java:70)
     05-12 15:57:37.478: E/AndroidRuntime(20431):   at org.andengine.opengl.font.FontUtils.measureText(FontUtils.java:49)
     05-12 15:57:37.478: E/AndroidRuntime(20431):   at org.andengine.entity.text.Text.setText(Text.java:201)
     05-12 15:57:37.478: E/AndroidRuntime(20431):   at org.andengine.entity.text.Text.<init>(Text.java:159)
     05-12 15:57:37.478: E/AndroidRuntime(20431):   at org.andengine.entity.text.Text.<init>(Text.java:146)
     05-12 15:57:37.478: E/AndroidRuntime(20431):   at org.andengine.entity.text.Text.<init>(Text.java:138)
     05-12 15:57:37.478: E/AndroidRuntime(20431):   at org.andengine.entity.text.Text.<init>(Text.java:110)
     05-12 15:57:37.478: E/AndroidRuntime(20431):   at org.andengine.entity.text.Text.<init>(Text.java:102)
     05-12 15:57:37.478: E/AndroidRuntime(20431):   at com.packagename.scene.GameScene.createHUD(GameScene.java:55)
     05-12 15:57:37.478: E/AndroidRuntime(20431):   at com.packagename.scene.GameScene.createScene(GameScene.java:39)
     05-12 15:57:37.478: E/AndroidRuntime(20431):   at com.packagename.base.BaseScene.<init>(BaseScene.java:36)
     05-12 15:57:37.478: E/AndroidRuntime(20431):   at com.packagename.scene.GameScene.<init>(GameScene.java:26)
     05-12 15:57:37.478: E/AndroidRuntime(20431):   at com.packagename.manager.SceneManager$1.onTimePassed(SceneManager.java:112)
     05-12 15:57:37.478: E/AndroidRuntime(20431):   at org.andengine.engine.handler.timer.TimerHandler.onUpdate(TimerHandler.java:98)
     05-12 15:57:37.478: E/AndroidRuntime(20431):   at org.andengine.engine.handler.UpdateHandlerList.onUpdate(UpdateHandlerList.java:47)
05-12 15:57:37.478:E/AndroidRuntime(20431):java.lang.NullPointerException:尝试在空对象引用上调用接口方法“org.andengine.opengl.font.Letter org.andengine.opengl.font.IFont.getLetter(char)”
05-12 15:57:37.478:E/AndroidRuntime(20431):位于org.andengine.opengl.font.FontUtils.measureText(FontUtils.java:95)
05-12 15:57:37.478:E/AndroidRuntime(20431):位于org.andengine.opengl.font.FontUtils.measureText(FontUtils.java:70)
05-12 15:57:37.478:E/AndroidRuntime(20431):位于org.andengine.opengl.font.FontUtils.measureText(FontUtils.java:49)
05-12 15:57:37.478:E/AndroidRuntime(20431):位于org.andengine.entity.text.text.setText(text.java:201)
05-12 15:57:37.478:E/AndroidRuntime(20431):位于org.andengine.entity.text.text.(text.java:159)
05-12 15:57:37.478:E/AndroidRuntime(20431):位于org.andengine.entity.text.text.(text.java:146)
05-12 15:57:37.478:E/AndroidRuntime(20431):位于org.andengine.entity.text.text.(text.java:138)
05-12 15:57:37.478:E/AndroidRuntime(20431):位于org.andengine.entity.text.text.(text.java:110)
05-12 15:57:37.478:E/AndroidRuntime(20431):位于org.andengine.entity.text.text.(text.java:102)
05-12 15:57:37.478:E/AndroidRuntime(20431):在com.packagename.scene.GameScene.createHUD(GameScene.java:55)
05-12 15:57:37.478:E/AndroidRuntime(20431):在com.packagename.scene.GameScene.createScene(GameScene.java:39)
05-12 15:57:37.478:E/AndroidRuntime(20431):位于com.packagename.base.BaseScene。(BaseScene.java:36)
05-12 15:57:37.478:E/AndroidRuntime(20431):在com.packagename.scene.GameSecene。(GameSecene.java:26)
05-12 15:57:37.478:E/AndroidRuntime(20431):在com.packagename.manager.SceneManager$1.onTimePassed(SceneManager.java:112)
05-12 15:57:37.478:E/AndroidRuntime(20431):位于org.andengine.engine.handler.timer.TimerHandler.onUpdate(TimerHandler.java:98)
05-12 15:57:37.478:E/AndroidRuntime(20431):位于org.andengine.engine.handler.UpdateHandlerList.onUpdate(UpdateHandlerList.java:47)
试试看

而不是

final ITexture mainFontTexture = new BitmapTextureAtlas(activity.getTextureManager(), 256, 256, TextureOptions.BILINEAR);

好了,终于得到了错误!错误在于,在GameSecene类中创建文本时,必须从ResourceManager类访问字体。但是没有加载字体,因为没有调用函数loadMenuFonts()。因此,将该代码段移动到loadGameFonts()函数中可以确保在调用函数loadGameResources()函数时调用loadGameFonts()函数

     public void loadGameResources()
{
    loadGameGraphics();
    loadGameFonts();
    loadGameAudio();
}
以及loadGameFonts()函数:

     private void loadGameFonts()
{
    FontFactory.setAssetBasePath("font/");
    final ITexture mainFontTexture = new   BitmapTextureAtlas(activity.getTextureManager(), 256, 256, TextureOptions.BILINEAR);
    font = FontFactory.createStrokeFromAsset(activity.getFontManager(), mainFontTexture, activity.getAssets(), "font.ttf", 50, true, Color.WHITE, 2, Color.BLACK);
    //mainFontTexture.load();
    font.load();
}

在参数中必须有一个textureManager,对吗?看这里,我用这个作为我的参数,但仍然没有。同样的错误弹出。看起来字体没有加载。
     private void loadGameFonts()
{
    FontFactory.setAssetBasePath("font/");
    final ITexture mainFontTexture = new   BitmapTextureAtlas(activity.getTextureManager(), 256, 256, TextureOptions.BILINEAR);
    font = FontFactory.createStrokeFromAsset(activity.getFontManager(), mainFontTexture, activity.getAssets(), "font.ttf", 50, true, Color.WHITE, 2, Color.BLACK);
    //mainFontTexture.load();
    font.load();
}