Silverlight中的背景缓冲音乐

时间:2010-09-11 11:22:12

标签: silverlight silverlight-3.0

我正在Silverlight中制作游戏,我想给它一些背景音乐。特别是我想避免在初始下载(XAP)中包含MP3,以便用户可以在音乐下载之前开始播放。

我如何:

  • 动态开始播放指定网址的MP3文件
  • 让MP3文件在下载完成之前开始播放
  • 开始下载MP3文件而不进行播放(即:预装)
  • 如果用户稍后返回页面,则以高速缓存MP3文件

(我假设所有这些事情都可能吗?)

顺便说一下,我并没有真正使用XAML,所以我们很感激基于代码的答案。

2 个答案:

答案 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来实现自己的流媒体协议。