MonoGame Mediaplayer只播放一首歌曲

时间:2014-12-14 18:21:41

标签: xna

我用:

    MediaPlayer.Play(song1);

播放一首歌。

然后我用

    MediaPlayer.Play(song2);

播放第二首歌。但Mediaplayer仍然播放song1。我试图阻止播放器并再次播放song2,但它不起作用。当我交换song1和song2时,它只播放song2。

编辑: 我有这门课:

public class SoundHelper
    {
        public static void PlaySong(Song song)
        {
            MediaPlayer.Stop();
            MediaPlayer.Play(song);
        }

        public static void StopSong()
        {
            MediaPlayer.Stop();
        }
    }

我用:

SoundHelper.PlaySong(Content.Load<Song>("Sounds/Songs/MenuTheme"));

在游戏开始时播放歌曲并且有效。

然后我用:

SoundHelper.PlaySong(Content.Load<Song>("Sounds/Songs/Battle"));

在战斗中播放下一首歌曲,然后从头开始播放MenuTheme。

2 个答案:

答案 0 :(得分:0)

你必须停止播放当前的歌曲

if (PlaySong1) {
     MediaPlayer.Stop();
     MediaPlayer.Play(Song1); 
}
else{
     MediaPlayer.Stop(); 
     MediaPlayer.Play(Song2); 
}

修改

  • 您的代码看起来很好,请确保您只调用一次“SoundHelper”, 加载菜单或战斗。
  • 也尝试在MediaPlayser.Stop()上使用“try”和“catch”,但不确定 如果没有加载歌曲,可能会抛出异常。
  • 最好在“loadcontent”中加载歌曲。

    song1 = Content.Load<Song>("song1"); song2 = Content.Load<Song>("song2");

  • 也许可以解决添加MediaPlayer.IsRepeating = true;。 到目前为止,我记得这一切。

答案 1 :(得分:0)

不幸的是,这似乎是MonoGame中的一个错误。有同样的问题。 使用3.3版本,您的方法应该有效。