【问题标题】:NullPointerException in LibGDX Android projectLibGDX And​​roid 项目中的 NullPointerException
【发布时间】:2018-07-18 00:39:36
【问题描述】:

我一直在开发 2D 游戏(使用 LibGDX),但在我的 Alpha 测试期间,我在某些设备上遇到了崩溃。从发布前的报告来看,问题如下:

java.lang.NullPointerException:尝试在空对象引用上调用接口方法“void com.badlogic.gdx.audio.Music.setLooping(boolean)”

在 com.bonbon.lubyjump.game.Game.initialiseSounds(Game.java:151)

在 com.bonbon.lubyjump.game.Game.loadSounds(Game.java:147)

在 com.bonbon.lubyjump.game.Game.create(Game.java:102)

atcom.badlogic.gdx.backends.android.AndroidGraphics.onSurfaceChanged(AndroidGraphics.java:311)

在 android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1519)

在 android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)

据我了解,setLooping() 只有在没有“Theme.wav”音频文件的情况下才会抛出上述错误。但有些设备运行时没有任何崩溃的事实似乎表明音频文件确实存在。有什么我可能忽略的可能生成NullPointerException 的东西吗?我无法在 Android Studio 中的任何虚拟设备上重新创建错误。

private void loadSounds() {
    try {
        themeSong = Gdx.audio.newMusic(Gdx.files.internal("Theme.wav"));
        gamePlaySong = Gdx.audio.newMusic(Gdx.files.internal("Gameplay.wav"));
        jumpSound = Gdx.audio.newSound(Gdx.files.internal("Jump.wav"));
        fartSound = Gdx.audio.newSound(Gdx.files.internal("Fart.wav"));
        gameOverSound = Gdx.audio.newSound(Gdx.files.internal("GameOver.wav"));
    } catch (Exception e) {
        e.printStackTrace();
    }
    initialiseSounds();
}

private void initialiseSounds(){
    themeSong.setLooping(true);  //This line causes the error
    themeSong.setVolume(soundVolume);
    themeSong.play();
    gamePlaySong.setVolume(soundVolume);
}

【问题讨论】:

  • 强烈建议在您的帖子中以格式化文本而不是图像的形式发布代码。
  • 没问题,很乐意提供帮助。
  • 错误是因为 themeSong 为空。您使用e.printStackTrace() 打印堆栈跟踪,并在此处包含它以查看您捕获的原始错误是什么。
  • @TylerV 如果 themeSong 为空,那不是意味着音乐文件丢失了吗?如果是这样,它应该在所有设备上都崩溃了。但它只在少数几个方面崩溃。另外,我已经包含了堆栈跟踪,但它似乎不是从e.printStackTrace() 打印出来的(因为调用了initialiseSounds())
  • 您应该看到之前从致命异常上方的 printStackTrace 打印的一些错误消息。或者,您可以删除 try-catch 以查看那里抛出了什么。

标签: android nullpointerexception libgdx


【解决方案1】:

对于可能遇到相同问题的任何人,我发现某些设备崩溃了,因为它们无法处理 wav 文件,这是我用于音频文件的格式。一旦我将它们转换为 mp3,问题就解决了,所有设备都可以正常运行而不会崩溃。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-08
    • 1970-01-01
    • 2013-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多