2012-11-26 25 views
4

我加載與下面的代碼的音樂在我的負荷量功能:XNA MediaPlayer的裝載樂曲中的時期

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; 
    } 
} 

這應該開始播放歌曲的更新方法的第一階段,而不是在加載階段,其中的歌曲是「玩」,而Content.Load<Song>畢竟資源仍然加載(這將是原因你的歌早日結束)。

+0

我遇到的部分問題是我的計時器似乎運行不正確,我可能會嘗試使用xna秒錶。但是使用上面的代碼來解決問題的加載部分:)因爲現在時序錯誤似乎更加穩定。 – user1854693