我在Game1的Draw()中有以下代码。但是,当我按下该程序的关闭按钮时,音乐才会播放。如果没有,我应该把MediaPlayer.Play()放在哪里? normS,fastS,slowS和play都是Song类型。如果你需要我清除任何东西,请问。
if (stateS == "normal")
{
if (!MediaPlayer.Equals(playing, normS))
{
playing = normS;
}
spriteBatch.Draw(norm, pos, Color.White);
}
else if (stateS == "fast")
{
if (!MediaPlayer.Equals(playing, fastS))
{
playing = fastS;
}
spriteBatch.Draw(fast, pos, Color.White);
}
else if (stateS == "slow")
{
if (!MediaPlayer.Equals(playing, slowS))
{
playing = slowS;
}
spriteBatch.Draw(slow, pos, Color.White);
}
MediaPlayer.Play(playing);
答案 0 :(得分:0)
是否有一个特殊原因需要让歌曲播放出Draw方法?画画应留作画画。
与上述评论中的user1306322一样,我建议移动
MediaPlayer.Play(playing);
进入Update方法,并将其包装在条件中(所以你不要只是每次更新都要播放一首新歌,我认为就是你现在正在发生的事情,因为你点击并按住了关闭窗口x会停止更新。您可以通过拖动窗口来尝试此操作):
if (!MediaPlayer.IsPlaying)
{
MediaPlayer.Play(playing);
}
如果有必要,你可以将剩下的代码保留在Draw中,但很可能这一切都应该放在Update中。
编辑我刚刚意识到你可能没有条件,因为你希望能够随时更改歌曲。在这种情况下,你应该设置一个变量来保存你的“最后一首歌”,这样你就可以在条件中比较它:
if (MediaPlayer.IsPlaying == false || playing != lastPlaying)
{
MediaPlayer.Play(playing);
}