首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows Phone MediaElement

Windows Phone MediaElement
EN

Stack Overflow用户
提问于 2014-02-17 07:48:21
回答 1查看 958关注 0票数 0

我正在使用c#和xaml创建一个应用程序,每个页面有20页,每个页面都有一些字符图像,当我点击该图像时,一些对话应该弹出up.so,我已经拍摄了一个MediaElement,并使其成为全局的,如下所示:

App.xaml:

代码语言:javascript
复制
<MediaElement x:Key="StorySound" 
                  Volume="1"
                  AutoPlay="True"/>

App.xaml.cs:

代码语言:javascript
复制
public static MediaElement StorySound
    {
        get { return Current.Resources["StorySound"] as MediaElement; }
    }

在tap事件的每一页上,我都写了这样的代码:

代码语言:javascript
复制
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个声音文件。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-01 19:10:45

如果我正确地理解了您的意思,那么您正在将MediaOpened-event连接到每一页的全局StorySound-object上,但您似乎从未将其解锁。我建议你要么:

  • 在您开始的每个页面上使用一个本地MediaElement (可能停止),或者
  • 在导航时,确保取消了StorySound上的所有事件(因此每个页面都是这个全局资源的唯一“用户”)。

我相信在您的应用程序中有可能是很好的,您不需要将它们转换为wav。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21823436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档