我需要在 WP7 Silverlight 应用程序中运行背景音乐。在页面之间导航时,我需要它继续播放。
我也不希望它在播放另一个音效时停止。
我需要在 WP7 Silverlight 应用程序中运行背景音乐。在页面之间导航时,我需要它继续播放。
我也不希望它在播放另一个音效时停止。
您可以使用 MediaElement 来做到这一点或使用 XNA SoundEffects 但我有更好的解决方案。为您的应用程序创建一个 SilverXNA 项目。你真的不需要使用 XNA,但是这个项目会自动创建一些让生活更轻松的东西。您可以使用它毫无问题地构建 Silverlight 应用程序。
创建项目后,在项目中包含您的声音文件说“7am.mp3”并将其构建操作设置为“内容”。
在 GamePage.xaml.cs 中创建歌曲:
Song music;
现在在 OnNavigatedTo() 中添加:
music = contentManager.Load<Song>("7am");
在此之后,您可以将这首歌播放为:
MediaPlayer.Play(music);
您可以设置音量等。
那么,为什么要采用这种方法呢?好吧,因为根据技术认证指南,如果用户已经在听歌曲,你不能打断他,而且 SoundEffects 类不能用于背景音乐,因此这种方法是获得这种灵活性的唯一方法。
您可以使用MediaPlayer.GameHasControl
查看用户是否正在播放音乐。
解决方案是在引用Microsoft.Xna.Framework
然后使用以下函数:
public static void PlaySound(string soundFile)
{
var stream = Application.GetResourceStream(new Uri(soundFile, UriKind.Relative)).Stream;
if (stream != null)
{
var effect = Microsoft.Xna.Framework.Audio.SoundEffect.FromStream(stream);
Microsoft.Xna.Framework.FrameworkDispatcher.Update();
effect.Play();
}
}
http://spacemigas.wordpress.com/2011/04/07/overcoming-windows-phone-7-mediaelement-limitations/