0

我在 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从新加载它。

4

1 回答 1

0

请看这个 StackOverflow问题——答案很清楚。简而言之,您必须FrameworkDispatcher.Update()在使用 XNA 媒体库之前调用。

于 2012-12-13T12:12:45.080 回答