0


0

Silverlightのバックグラウンドバッファミュージック

私はSilverlightでゲームを作っています、そしてそれにいくつかのバックグラウンドミュージックを与えたいです。 特に、最初のダウンロード(XAP)にMP3を含めないようにしたいので、ユーザーは音楽のダウンロードが完了する前に再生を開始できます。

どうすればいいの?

  • 指定されたURLからMP3ファイルの再生を動的に開始します

  • ダウンロードが完了する前にMP3ファイルの再生を開始する

  • 再生せずにMP3ファイルのダウンロードを開始します(つまり、プリロードします)

  • ユーザーがに戻るとMP3ファイルがキャッシュされるような方法で 後でページ

(私はこれらのすべてが可能だと仮定していますか?)

ちなみに、私は実際にはXAMLを使用していません。そのため、コードベースの回答を歓迎します。

2 Answer


1


`System.Windows.Controls.MediaElement`は明らかに使用するコントロールです。 完全に正しく動作するには、Silverlightビジュアルツリーに追加する必要があります。

曲をプリロードするコードは次のとおりです。

mediaElement.AutoPlay = false;
mediaElement.Source = new Uri("/content/something.mp3", UriKind.Relative);

(音楽をプロジェクトに追加し、ビルドアクション=なし、および出力ディレクトリにコピー=新しい場合はコピーで設定するのが最適です。 これにより、XAPの横に配置されます。)

これにより、曲を再生せずにバックグラウンドでロードを開始できます。 プリロードの完了を確認するには、 mediaElement.DownloadProgressChanged`をフックし、 mediaElement.DownloadProgress == 1`を確認します。 「MediaFailed」をフックすると、ダウンロードが失敗したかどうかがわかります。

曲はダウンロードが完了するのを待たずに開始できます。 また、MediaElementは、_完全にダウンロードされた曲をブラウザーキャッシュに正しくキャッシュします。


0


MediaElementオブジェクトは、MP3ファイルのプログレッシブダウンロードをサポートしています。 サーバーにMP3ファイルを配置し、必要なときにストリーミングできます。 ストレージをさらに制御したい場合は、http://msdn.microsoft.com/en-us/library/system.windows.media.mediastreamsource%28v=VS.95%29.aspxを実装することにより、独自のストリーミングプロトコルを実装できます。 [MediaStreamSource]。