我在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;
音乐开始播放,但应用程序失败,出现以下异常,没有明显的callstack提示:
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.
其次,我使用UIElementRenderer
渲染了一些基于Silverlight的窗口。当需要时,我将控件的IsEnabled
标志更改为true并开始在屏幕上绘制它。这使得音乐在没有明显原因的情况下停止播放淡出,当我关闭Silverligh窗口时它甚至不会重新开始。
从框架导航回到它会让事情变得更糟。对MediaPlayer.Play(song)
的同一次调用表示该歌曲已被处理,即使我从ContentManager
重新加载它。
答案 0 :(得分:0)
请参阅this StackOverflow问题 - 答案非常明确。简而言之,您必须在使用XNA媒体库之前调用FrameworkDispatcher.Update()
。