2014-02-17 73 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();    
    } 

當我使用,我已經創建無聲音播放下一個按鈕,導航至第三頁,但是當我關閉應用程序,並直接打開第3頁播放聲音此起在不超過2頁的聲音。我甚至通過使用MessageBox來測試這個顯示mediaelement的當前狀態,我發現在前兩頁當前狀態是「打開」和聲音播放,但在第三頁上當前狀態是「關閉」,所以聲音不Play.is有播放聲音時使用MediaElement任何內存問題。我不能使用SoundEffect因爲我所有的聲音文件都是.mp3,如果我使用soundeffect我將不得不在這些聲音轉換.wav這將增加我的大小應用程序,因爲我有超過50個聲音文件。

回答

0

如果我正確地理解了你,你會在全球StorySound -object上掛上MediaOpened -event,但你永遠不會解開它。 我建議你可以:

  • 使用每次啓動(也許停止)頁面上的本地MediaElement,或
  • 確保你解開的StorySound所有事件,當你瀏覽(讓每個頁面是這個全球資源的唯一「用戶」)。

我相信在您的應用中可能會有mp3;你不需要將它們轉換成wav。

相關問題