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