我正在使用c#和xaml创建一个应用程序,每个页面有20页,每个页面都有一些字符图像,当我点击该图像时,一些对话应该弹出up.so,我已经拍摄了一个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; }
}在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();
} 当我使用next按钮导航到第3页时,这个声音播放的页面不超过2页,我没有创建声音播放按钮,但是当我关闭应用程序并直接打开第3页的声音播放时,我甚至通过使用MessageBox来显示媒体元素的当前状态来测试这一点,我发现在前两页上,当前状态是“打开”和声音播放,但是在第三页上,当前状态是“关闭的”,所以当使用MediaElement.I播放声音时,声音不会出现内存问题。我不能使用SoundEffect,因为我所有的声音文件都是“打开”的。.mp3和如果我使用声波,我将不得不转换这些声音在.wav,这将增加我的应用程序的大小,因为我有超过50个声音文件。
发布于 2014-04-01 19:10:45
如果我正确地理解了您的意思,那么您正在将MediaOpened-event连接到每一页的全局StorySound-object上,但您似乎从未将其解锁。我建议你要么:
MediaElement (可能停止),或者StorySound上的所有事件(因此每个页面都是这个全局资源的唯一“用户”)。我相信在您的应用程序中有可能是很好的,您不需要将它们转换为wav。
https://stackoverflow.com/questions/21823436
复制相似问题