2010-09-17 188 views
0

我最近在XNA框架下的「Song」類下加載了我的遊戲音頻。XNA MediaPlayer.Volume setter極其緩慢

一切似乎工作正常,直到我決定增加可能性來改變歌曲的音量,使用MediaPlayer.Volume設置。

但是,當我第一次嘗試更改音量時,它會慢慢地運行真的(如3到4秒,這對於音量更改而言相當多)。之後,當我嘗試再次改變音量時,音量立即改變。

基本上,我有三個音量級別選擇: ...所以我的問題是,可能不是因爲我改變音量過於頻繁或太快。

我只想知道你們中的任何人是否知道MediaPlayer.Volume何時需要更多時間才能運行,因此我可以檢查問題出在哪裏。

回答

2

如果您身邊的Google會發現MediaPlayer存在很多性能問題。而且他們通常依賴於您正在運行的系統。這是由於它在幕後使用Windows Media Player(在Windows上)。

這裏是減輕性能問題的幾種方法:

  • 切勿從MediaPlayer的讀值(例如:音量 - 這包括使用+=設置它)。存儲實際值並且只分配給它。
  • 由於上述原因,請使用狀態更改事件來接收狀態更改通知。
  • 將MediaPlayer類的使用放在一個單獨的線程上(ThreadPool在Windows上就足夠了) - 這就解決了它阻塞主線程的情況(其中大部分都是這樣,但在少數系統上它可以阻止整個進程或整個系統)。
  • 讓問題消失的唯一可靠方法是根本不使用MediaPlayer。你可以把你的音樂放入XACT並壓縮它(我想你也可以使用SoundEffect)。

如果我不得不猜測(和我做) - 我會說移動你的音量變化到另一個線程將解決你的問題。

+0

非常感謝您的回答!相反,我肯定會改用XACT。 – 2010-09-17 11:53:03

+0

請注意,這會消除用戶在Xbox上播放自己的音樂的自動處理功能。 – 2010-09-17 14:21:07