所以,我正在使用 Java 制作一个游戏,我想向我的应用程序添加背景音乐。所以,我创建了一个类
SoundManager
并在其中编写了以下代码:
package Managers;
import java.io.File;
import java.net.URL;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import Main.Game;
public class SoundManager {
ClickManager cm;
Clip c;
public SoundManager(ClickManager cm) {
this.cm = cm;
}
public void setFile(String name) {
try {
File file = new File(name);
AudioInputStream ais = AudioSystem.getAudioInputStream(file);
c = AudioSystem.getClip();
c.open(ais);
}catch(Exception e) {}
}
public void loop() {
c.loop(c.LOOP_CONTINUOUSLY);
}
public void stop() {
c.stop();
c.close();
}
public void play() {
c.setFramePosition(0);
c.start();
}
}
我将这个类用于音效和背景音乐。音效似乎工作正常,但是当我尝试使用此代码实现背景音乐时:
cm.sm.setFile("/Game/res/sound/bg.wav");
cm.sm.play();
cm.sm.loop
//cm and sm are the name of classes
我的背景音乐按预期播放并且也循环播放。但当我关上窗户时,我仍然听到背景音乐。我认为当窗口关闭时它应该自动停止。但我必须重新启动电脑才能停止声音
您是否覆盖窗口的
windowClosing()
事件并调用 cm.sm.stop()
?