在Silverlight + XNA应用程序中播放音乐

时间:2012-12-12 19:44:21

标签: silverlight windows-phone-7 audio 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;

音乐开始播放,但应用程序失败,出现以下异常,没有明显的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重新加载它。

1 个答案:

答案 0 :(得分:0)

请参阅this StackOverflow问题 - 答案非常明确。简而言之,您必须在使用XNA媒体库之前调用FrameworkDispatcher.Update()