アプリに .wav ファイルの効果音があります。何らかの理由で、ある場所(通常の電話ページ)では正しく再生されますが、他の場所(ユーザーコントロール内)で使用すると再生されません(同じコードを使用していて、コードが実行されていますが)。
そして奇妙なことに(少なくとも私にとっては:))サウンドを再生する前にブレークポイントを設定し、[続行]をクリックすると、実際にエミュレーターでサウンドが再生されるため、ユーザーコントロールを再生するには何か特別なことをする必要があると思います正しく聞こえます (同じコードが他の場所でも機能するため)。
次のように XAML でサウンドを設定します。
<MediaElement x:Name="StampSound"
Source="/Sounds/stamp.wav"
Volume="1"
AutoPlay="False" />
XAML ページとユーザー コントロールで同じコードを使用してサウンドを設定します。次に、サウンドを再生したいときは、次を使用します。
StampSound.Play()
これは私のメイン ページでは正しく動作しますが、私のユーザー コントロールでは音がしません (ただし、コードは実行中であり、ブレークポイントを設定して続行するとサウンドが再生されます)。
したがって、コードは問題ないと思いますが、ユーザー コントロールに何かが欠けている可能性があります。UserControl_Loaded サブでサウンドを再生しようとしましたが、オーディオに合わせてアニメーションも (成功して) 実装しました (ちなみに、メイン ページのサウンドと一致するアニメーションと同じアニメーションです)。
ここで私が知らないタイミングタイプの問題はありますか? 助けやアイデアをいただければ幸いです。
これは Windows Phone 8 XAML + VB.net 用ですが、C# コードで管理できます。
編集:答えが見つかりました
OK、これを投稿しようとしているときに答えを見つけましたが、答えは少し異なる質問に対するものだったので、他の誰かが遭遇した場合に備えてこれに答えると思いました.
(ここにリンクの説明を入力してからの回答
サウンドがロードされる前にサウンドを再生しようとしていたようです。そのため、サウンドのロードが終了したときのハンドラーを追加し、そこでサウンドを再生しました。
Private Sub StampSound2_MediaOpened(sender As Object, e As RoutedEventArgs) Handles StampSound2.MediaOpened
StampSound2.Play()
End Sub
できるだけ早くサウンドを再生する必要があるため、これは私にとってはうまくいきます(つまり、コントロールがロードされるとすぐに再生する必要があります)。