即使在Java中关闭应用程序后也能播放声音

svgewumm  于 2024-01-05  发布在  Java
关注(0)|答案(1)|浏览(195)

所以,我用Java做了一个游戏,我想在我的应用程序中添加背景音乐。所以,我创建了一个类SoundManager,并在其中编写了以下代码:

  1. package Managers;
  2. import java.io.File;
  3. import java.net.URL;
  4. import javax.sound.sampled.AudioInputStream;
  5. import javax.sound.sampled.AudioSystem;
  6. import javax.sound.sampled.Clip;
  7. import Main.Game;
  8. public class SoundManager {
  9. ClickManager cm;
  10. Clip c;
  11. public SoundManager(ClickManager cm) {
  12. this.cm = cm;
  13. }
  14. public void setFile(String name) {
  15. try {
  16. File file = new File(name);
  17. AudioInputStream ais = AudioSystem.getAudioInputStream(file);
  18. c = AudioSystem.getClip();
  19. c.open(ais);
  20. }catch(Exception e) {}
  21. }
  22. public void loop() {
  23. c.loop(c.LOOP_CONTINUOUSLY);
  24. }
  25. public void stop() {
  26. c.stop();
  27. c.close();
  28. }
  29. public void play() {
  30. c.setFramePosition(0);
  31. c.start();
  32. }
  33. }

字符串
我使用这个类来实现音效和背景音乐。音效似乎工作得很好,但是当我尝试使用这个代码来实现背景音乐时:

  1. cm.sm.setFile("/Game/res/sound/bg.wav");
  2. cm.sm.play();
  3. cm.sm.loop
  4. //cm and sm are the name of classes


我的背景音乐播放和预期的一样,也循环。但当我关闭我的窗口,我仍然听到背景音乐。我认为它应该自动停止时,窗口关闭。但我必须重新启动我的电脑停止声音

p3rjfoxz

p3rjfoxz1#

我认为你应该覆盖窗口的windowClosing()事件并调用cm.sm.stop()
(To解释一下我所说的“超越”是什么意思:

  1. myMainWindow.addWindowListener(
  2. new WindowAdapter()
  3. {
  4. public void windowClosing(WindowEvent e)
  5. {
  6. // your code here...
  7. }
  8. }
  9. );

字符串

相关问题