我正在创建一个基本游戏,我可以加载图片。现在,我正在尝试加载声音,但我一直在 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);
}
答案 0 :(得分:0)
我很确定它应该是
/res/ping_pong...ogg
不
res/ping_pong...ogg
答案 1 :(得分: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/...
等。)