簡體   English   中英

Windows Phone MediaElement

[英]Windows Phone MediaElement

我正在使用c#和xaml創建一個應用程序,其中我有20頁,每頁都有一些字符圖像,當我點擊該圖像時,應該會彈出一些對話框。所以我采用了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頁的頁面上播放,但是當我關閉應用程序並直接打開第三頁時,聲音會播放。我什至對此進行了測試使用MessageBox顯示中介元素的當前狀態,我發現在前兩頁上當前狀態為“正在打開”,並且播放聲音,但是在第三頁上,當前狀態為“關閉”,因此聲音未播放。使用MediaElement播放聲音時沒有任何內存問題。我無法使用SoundEffect,因為我所有的聲音文件都是.mp3,如果我使用soundeffect,我將不得不將這些聲音轉換為.wav,這將增加我的應用程序的大小,因為我的聲音超過了50個聲音文件。

如果我理解你正確地你是掛鈎MediaOpened對全球-event StorySound -object每一頁上,但你似乎從來沒有解開它。 我建議您:

  • 在您開始(甚至停止)的每個頁面上使用本地MediaElement ,或者
  • 確保在導航時取消對StorySound上的所有事件的StorySound (以便每個頁面都是此全局資源的唯一“用戶”)。

我敢肯定,在您的應用中可以包含mp3。 您無需將它們轉換為wav。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM