Я создаю приложение, использующее C# и xaml, где у меня 20 страниц на каждой странице есть некоторые изображения символов, и когда я нажимаю на это изображение, некоторые диалоги должны появляться. Так я взял MediaElement и сделал его глобальным это:Windows Phone MediaElement
App.xaml:
<MediaElement x:Key="StorySound"
Volume="1"
AutoPlay="True"/>
App.xaml.cs:
public static MediaElement StorySound
{
get { return Current.Resources["StorySound"] as MediaElement; }
}
И на каждой странице по событию водопроводного я написал этот код:
App.StorySound.Source = new Uri("/Sounds/Dialogues/" + textblock.Text + ".mp3", UriKind.Relative);
App.StorySound.MediaOpened+=StorySound_MediaOpened;
void StorySound_MediaOpened(object sender, RoutedEventArgs e)
{
App.StorySound.Play();
}
Этот звук воспроизводится не более чем на 2 страницах, когда я перехожу на 3-ей странице, используя следующую кнопку, которую я создал, но звук не воспроизводится, но когда я закрываю приложение и открываю третью страницу, звук воспроизводится. Я даже протестировал это, используя MessageBox, чтобы показать текущее состояние элемента мультимедиа. Я обнаружил, что на первых двух страницах текущее состояние «Открытие», а звук воспроизводится, но на третьей странице текущее состояние «Закрыто», поэтому звук не воспроизводится. Есть ли какая-либо проблема с памятью при воспроизведении звуков с помощью MediaElement.I не могу использовать SoundEffect. Поскольку все мои звуковые файлы являются .mp3, и если я использую soundeffect, мне придется преобразовывать эти звуки в .wav, что увеличит размер моего приложение, потому что у меня более 50 звуковых файлов.