我正在用Java开发游戏,我希望在后台播放主题曲,但是每当用户按下减号时,音量就会减小。无论我尝试什么,除了cli初始化剪辑的方法外,我都无法通过另一种方法执行此操作,因为cli。
这是我的GameAudio类的代码:
public class GameAudio {
private static float volume = -20.0f;
private Clip clip;
public GameAudio(String audioLocation) {
try {
File filePath = new File(audioLocation);
if (filePath.exists()) {
AudioInputStream audioInput = AudioSystem.getAudioInputStream(filePath);
Clip clip = AudioSystem.getClip();
clip.open(audioInput);
FloatControl gainControl = (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN);
gainControl.setValue(getVolume());
clip.loop(Clip.LOOP_CONTINUOUSLY);
clip.start();
} else {
System.out.println("Incorrect audio file path!");
}
} catch (Exception e) {
e.printStackTrace();
}
}
public float getVolume() {
return volume;
}
public void setVolume(float volume) {
GameAudio.volume = volume;
}
public void stopSound() {
clip.stop();
clip.close();
}
}
在我的播放器课程中,我放入:]
private String musicPath = "maintheme.wav"; GameAudio gameAudio = new GameAudio(musicPath);
然后进一步向下
if (input.minus.isPressed()) { try { TimeUnit.SECONDS.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); } gameAudio.stopSound(); if (gameAudio.getVolume() <= -80.0f) { gameAudio.setVolume(-70.0f); } gameAudio.setVolume(gameAudio.getVolume() - 10.0f); System.out.println("Volume: " + gameAudio.getVolume()); }
在调试模式下,空指针异常似乎来自gameAudio.stopSound()调用clip.stop();。和clip.close();如何避免这种情况?
我正在用Java开发游戏,我希望在后台播放主题曲,但是每当用户按下减号时,音量就会减小。不管我尝试什么,我都无法通过其他方法执行此操作...
您的问题在这条线上: