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

问题描述 投票:0回答:1

所以,我正在使用 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

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

java swing audio jframe
1个回答
0
投票

您是否覆盖窗口的

windowClosing()
事件并调用
cm.sm.stop()

© www.soinside.com 2019 - 2024. All rights reserved.