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<Song>
移至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<Song>
之后的所有资源仍在加载(这将是您的歌曲提前完成的原因)。
【讨论】:
我遇到的部分问题是我的计时器似乎运行不正确,我可能会尝试改用 xna 秒表。但是使用上面的代码可以解决问题的加载部分:),因为现在计时错误似乎更加稳定了。以上是关于XNA MediaPlayer 加载音乐时序的主要内容,如果未能解决你的问题,请参考以下文章
Microsoft XNA MediaPlayer.Play(song) 不播放某些歌曲
XNA Mediaplayer.Play()开始在计算机上的不同时间播放?
使用 SoundEffect 在 XNA 中循环播放带有前奏的音乐