0

我正在创建一个基本游戏,并且可以很好地加载图像。现在,我正在尝试加载声音,但我不断收到NullPointerExceptions。我 100% 确定路径是正确的,我尝试加载多个声音,但我总是收到此错误。我只能使用一次。

这是我的声音库:

public class SoundBank {

    public static Audio oggEffect;

    public SoundBank () {
        try {
            oggEffect = AudioLoader.getAudio("OGG", ResourceLoader.getResourceAsStream("Res/ping_pong_8bit_plop.ogg"));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

还有我的执行代码:

else if (Keyboard.isKeyDown(Keyboard.KEY_8)) {
    SoundBank.oggEffect.playAsSoundEffect(1.0f, 1.0f, true);
}
4

2 回答 2

0

我很确定应该是

/res/ping_pong...ogg

不是

res/ping_pong...ogg
于 2013-05-30T23:09:44.990 回答
0

永远不要通过构造函数初始化静态变量。

方法 1(这可以防止您不得不调用new SoundBank();init):

public class SoundBank {

    public static Audio oggEffect;

    static {
        try {
            oggEffect = AudioLoader.getAudio("OGG", ResourceLoader.getResourceAsStream("Res/ping_pong_8bit_plop.ogg"));
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

方法2(我让它像这样工作):

public class SoundUtils {
    public static void playSound(String res) {
        try {
            Audio a = AudioLoader.getAudio("OGG", ResourceLoader.getResourceAsStream("res/sfx/" + res + ".ogg"));
            a.playAsSoundEffect(1, 1, false);
        } catch (IOException e) {
            e.printStackTrace();
            //You don't need this.
            LoggerSys.get().getCurrentLogger().log("wtf i haz dun err0rz (" + e.toString() + ")");
        }
    }
}

编辑:哦,确保路径正确(Res/...而不是res/...等)

于 2015-03-09T11:49:59.657 回答