Clip.stop();尽管调用了方法,但在调用方法时将无法工作

时间:2019-03-02 23:34:40

标签: java javasound

我想创建一个游戏,然后完成主菜单和关卡选择菜单。在主菜单中,有一首从SharedClass开始播放的歌曲。我的主菜单中也有一个按钮,可以开始播放视频。视频按计划开始,但是我无法停止音频,尽管我在共享类中创建了一个包含剪辑停止的方法,并且如果调用了该方法,则我用System.out.println进行了测试。我真的不知道为什么音频不会停止。任何帮助表示赞赏。

My Shared Class

 public void stopAudio() {
clip.stop();
System.out.println("Test");
isPlaying = false;
}

My Video Class Where the video starts and the method from the sharedclass is being called which is supposed to stop the audio

SoundSharedInstance soundSharedInstance = SoundSharedInstance.getInstance();
    soundSharedInstance.stopAudio();

My Main Menu Where the audio starts

SoundSharedInstance soundSharedInstance = SoundSharedInstance.getInstance();
    if (!soundSharedInstance.isPlaying()) {
        soundSharedInstance.createAudio(new File("sounds//opening1.wav"));
        soundSharedInstance.startAudio();
        System.out.println(soundSharedInstance.isPlaying());
    }

1 个答案:

答案 0 :(得分:0)

据我所知,您对Clip的基本调用很好。我敢冒这个问题是由于静态SoundSharedInstance类与实际实例的管理不当而引起的。我想花点时间来解决这个问题比我有更多的时间做,但是您可以做一些测试来帮助您验证这一理论。

您可以检查在stopAudio方法中输出“测试”的位置。您确定所涉及的clip与正在播放的是同一个人吗?

例如,它可以帮助输出hashID(在clip的实例化,其开始和结束以及isPlaying方法为stopAudio的值的情况下即使它在您听到时仍告诉您“假”,也不会感到惊讶,这表明它涉及多个实例。