[英]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.