2010-03-25 24 views
2

使用XNA 4.0,我目前播放的歌曲從用戶的PC /使用以下XBOX360倒帶:XNA MediaPlayer的快進/

 Microsoft.Xna.Framework.Media.MediaPlayer.Play(Song song); 

我看到的MediaPlayer有一個靜態屬性PlayPosition,作爲我研究過,曾經是一個get/set屬性,但它已被更新爲只讀。

我可以使用其他方法/技巧明確設置當前正在播放的歌曲的播放位置嗎?

回答

1

看起來很喜歡他們在XNA 4.0中增加了一個DynamicSoundEffectInstance類。其中一個成員函數是SubmitBuffer,它允許您將「偏移量(以字節爲單位)設置爲數據的起始位置」。

請注意,我還沒有嘗試過,我不能告訴你如何讓你的音頻進入緩衝區的字節(也許你可以從XACT wavebank讀取它?)。這樣做可能也會很痛苦,因爲如果你決定再次改變位置,它看起來並不像你可以移除緩衝區。你將不得不讓它播放到最後,或者創建一個新的類,然後用新的偏移量提交一個新的緩衝區。因此,您可以將字節緩衝區保存在內存中,並且每次您想要更改位置時,都會將其傳遞到新的DynamicSoundEffectInstance類。

就像我說的,我還沒有嘗試過這一點,我只是在MSDN上的文檔。我搜索了一會兒,Shawn Hargreaves said早在09年10月出現之前,XNA 4.0出現了,他不認爲這可以完成。由於PlayPosition仍然是XNA 4.0中的唯一屬性,我不認爲你會在那裏有任何運氣,但DynamicSoundEffectInstance是新的,可能會給你你需要的東西。

+0

「肖恩哈格里夫斯在09年10月回顧說,在XNA 4.0問世之前他不認爲這可以完成。」 看起來這仍然是這樣,感謝Venesectrix的領導! – bufferz

+0

您是否確認使用submitbuffer不起作用?從描述來看,它確實聽起來像它完全是你想要的。 – sinsro