C# Windows Phone MediaElement
我正在使用c#和xaml创建一个应用程序,其中我有20个页面,每个页面都有一些字符图像,当我点击该图像时,应该会弹出一些对话。因此,我采用了MediaElement并使其全局化,如下所示: App.xaml:C# Windows Phone MediaElement,c#,xaml,windows-phone,mediaelement,C#,Xaml,Windows Phone,Mediaelement,我正在使用c#和xaml创建一个应用程序,其中我有20个页面,每个页面都有一些字符图像,当我点击该图像时,应该会弹出一些对话。因此,我采用了MediaElement并使其全局化,如下所示: App.xaml: <MediaElement x:Key="StorySound" Volume="1" AutoPlay="True"/> 在tap事件的每一页上,我都写了以下代码: App.StorySound.So
<MediaElement x:Key="StorySound"
Volume="1"
AutoPlay="True"/>
在tap事件的每一页上,我都写了以下代码:
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的当前状态,我发现在前两页当前状态为“打开”,声音播放,但在第三页上,当前状态为“关闭”因此声音无法播放。使用MediaElement播放声音时是否存在内存问题。我无法使用SoundEffect,因为我的所有声音文件都是.mp3。如果我使用SoundEffect,我将不得不将这些声音转换为.wav,这将增加我的应用程序的大小,因为我有50多个声音文件。如果我正确理解你的意思,你就是挂起每页上全局
StorySound
-对象上的MediaOpen
-事件,但您似乎从未将其解开。
我建议您:
- 在开始(或停止)的每个页面上使用本地
,或MediaElement
- 当您导航时,请确保在
上取消所有事件的锁定(以便每个页面都是此全局资源的唯一“用户”)StorySound
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();
}