2014-02-17 6 views
0

Я создаю приложение, использующее 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 звуковых файлов.

ответ

0

Если я правильно вас понимаю, вы подключаете MediaOpened -event к глобальному StorySound -объекту на каждой странице, но вы, кажется, не отцепите его. Я хотел бы предложить вам либо:

  • использовать локальный MediaElement на каждой странице, что вы начинаете (и, возможно, остановить) или
  • убедитесь, что вы отцепить все события на StorySound при навигации (так что каждый страница является единственным «пользователем» этого глобального ресурса).

Уверен, что это будет хорошо, если у вас есть mp3 в вашем приложении; вам не нужно преобразовывать их в wav.

Смежные вопросы