XNA MediaPlayer 加载音乐时序

Posted

技术标签:

【中文标题】XNA MediaPlayer 加载音乐时序【英文标题】:XNA MediaPlayer loading music timing 【发布时间】:2012-11-26 21:31:14 【问题描述】:

我在加载内容函数中使用以下代码加载音乐:

song = Content.Load<Song>("music/game");
MediaPlayer.IsRepeating = false;
MediaPlayer.Play(song);

这没什么奇怪的,但我游戏中的每一轮都是 2 分钟,应该与音乐同步(即 2 分钟),但音乐提前 2-4 秒结束。如果始终是同一时间,这将不是问题。

我的猜测是它与加载时间有关?有什么建议吗?

【问题讨论】:

【参考方案1】:

您可以做的一件事是将Content.Load&lt;Song&gt; 移至Load 方法并检查它是否正在更新中播放,如果没有,则播放。例如,

public void LoadContent(ConentManager content)

    song = content.Load<Song>("music/game");
    gameSongStartedPlaying = false; // this variable to hold if you have starting playing this song already
    MediaPlayer.IsRepeating = false;


public void Update(GameTime gameTime)

    if(MediaPlayer.State == MediaState.Stopped && !gameSongStartedPlaying)
    
        MediaPlayer.Play(song);
        gameSongStartedPlaying = true;
    

这应该在 Update 方法的第一遍开始播放歌曲,而不是在歌曲正在“播放”的加载阶段,而 Content.Load&lt;Song&gt; 之后的所有资源仍在加载(这将是您的歌曲提前完成的原因)。

【讨论】:

我遇到的部分问题是我的计时器似乎运行不正确,我可能会尝试改用 xna 秒表。但是使用上面的代码可以解决问题的加载部分:),因为现在计时错误似乎更加稳定了。

以上是关于XNA MediaPlayer 加载音乐时序的主要内容,如果未能解决你的问题,请参考以下文章

Microsoft XNA MediaPlayer.Play(song) 不播放某些歌曲

XNA Mediaplayer.Play()开始在计算机上的不同时间播放?

带有 XNA 的随机音乐播放器

使用 SoundEffect 在 XNA 中循环播放带有前奏的音乐

Android开发---MediaPlayer简单音乐播放器

XNA中的一首歌被切断了