我正在Silverlight中制作游戏,我想给它一些背景音乐。特别是我想避免在初始下载(XAP)中包含MP3,以便用户可以在音乐下载之前开始播放。
我如何:
(我假设所有这些事情都可能吗?)
顺便说一下,我并没有真正使用XAML,所以我们很感激基于代码的答案。
答案 0 :(得分:1)
System.Windows.Controls.MediaElement
是可以使用的控件。需要将其添加到Silverlight可视树中才能完全正常工作。
以下是预加载歌曲的代码:
mediaElement.AutoPlay = false;
mediaElement.Source = new Uri("/content/something.mp3", UriKind.Relative);
(音乐最好添加到项目中,并使用Build Action = None设置,并复制到输出目录=如果更新则复制。这将把它放在XAP旁边。)
这允许歌曲在不播放的情况下开始在后台加载。要检查预加载完成的时间,请挂钩mediaElement.DownloadProgressChanged
并检查mediaElement.DownloadProgress == 1
。挂钩MediaFailed
会告诉您下载是否失败。
可以在不等待下载完成的情况下启动歌曲。 MediaElement将在浏览器缓存中正确缓存完全下载的歌曲。
答案 1 :(得分:0)
MediaElement对象支持逐步下载MP3文件。您可以将MP3文件放在服务器上并在需要时进行流式传输。如果您想要更多地控制存储,可以通过实施MediaStreamSource来实现自己的流媒体协议。