2012-12-12 63 views
0

我在Silverlight + XNA組合應用程序中播放音樂時遇到了幾個問題。它有幾個Silverlight頁面和XNA渲染的「遊戲」頁面。在Silverlight + XNA應用程序中播放音樂

首先,我下面的代碼添加到主Silverlight的頁面的OnNavigatedTo事件:

var song = (Application.Current as App).Content.Load<Song>("Music/Menu"); 
MediaPlayer.Play(song); 
MediaPlayer.Volume = 0.9f; 
MediaPlayer.IsRepeating = true; 

音樂開始播放,但該應用程序失敗,出現以下異常沒有明顯的調用堆棧提示:

InvalidOperationException occured 
FrameworkDispatcher.Update has not been called. Regular FrameworkDispatcher.Update calls are necessary for fire and forget sound effects and framework events to function correctly. 

其次,我有幾個基於Silverlight的窗口使用UIElementRenderer呈現。當需要時,我將控件的IsEnabled標誌更改爲true,並開始在屏幕上繪製它。這使得音樂停止播放時沒有明顯的原因,當我關閉Silverligh窗口時,它甚至不會開始播放。

從框架導航返回到它使事情變得更糟。與MediaPlayer.Play(song)相同的電話表示該歌曲已被處置,儘管我重新從ContentManager加載它。

+0

閱讀異常消息 - 它解釋瞭如何解決它。 –

回答

0

請參閱this StackOverflow問題 - 答案很清楚。總之,在使用XNA媒體庫之前,您必須先撥打FrameworkDispatcher.Update()

+0

謝謝!這對第一部分確實有幫助。不過,我仍然對「基於UIElementRenderer」的窗口阻止音樂感到困惑。 – Impworks

+0

我認爲你應該創造一個不同的問題 - 混合問題不是一個好習慣。 – andrewpey

相關問題