【问题标题】:sound not playing at the right moment声音没有在正确的时刻播放
【发布时间】:2015-02-02 05:50:58
【问题描述】:

我在我的 Windows Phone 应用程序中为 背景音乐 创建了一个 MediaElement,它可以完美播放 现在当我尝试为按钮添加声音时出现问题按下时

当我调试时,背景音乐播放,但是当我按下按钮时,它导航我到下一页没有播放我创建的声音,当我从导航页面BackButton时,它会播放它,为什么?

代码:

private void play_Click(object sender, RoutedEventArgs e)
{
    MediaElement Click = new MediaElement();
    Click.Source = new Uri ("/Assets/Sounds/press.mp3",UriKind.Relative);
    Click.Position = TimeSpan.Zero;
    Click.Volume = 1;
    LayoutRoot.Children.Add(Click);
    Click.Play();
    NavigationService.Navigate(new Uri("/NavPage.xaml", UriKind.Relative));
}

【问题讨论】:

  • 使用后台音频播放器代替 MediaElement 在后台播放声音。 MediaElement 在后台不起作用。

标签: c# windows-phone-8


【解决方案1】:
private void play_Click(object sender, RoutedEventArgs e)
        {
            MediaElement Click = new MediaElement();
            Click.Source = new Uri ("/Assets/Sounds/press.mp3",UriKind.Relative);
            Click.Position = TimeSpan.Zero;
            Click.Volume = 1;
            LayoutRoot.Children.Add(Click);
            Click.Play();

        }

你应该处理这个外部按钮点击,

NavigationService.Navigate(new Uri("/NavPage.xaml", UriKind.Relative));

分别为点击和调用添加事件处理程序,

 Click.MediaEnded += Click_Completed;

 void Click_Completed(object sender, RoutedEventArgs e)
        {
           NavigationService.Navigate(new Uri("/NavPage.xaml", UriKind.Relative));
        }

【讨论】:

  • 但是当我按下“播放”按钮时,我需要导航到该页面
  • 我修改了答案
【解决方案2】:

或者您可以制作 mediaElement 的 MediaEnded 事件,然后您可以在其中调用导航

像这样:

private void play_Click(object sender, RoutedEventArgs e)
        {
            MediaElement Click = new MediaElement();
            Click.Source = new Uri ("/Assets/Sounds/press.mp3",UriKind.Relative);
            Click.Position = TimeSpan.Zero;
            Click.Volume = 1;
            LayoutRoot.Children.Add(Click);
            Click.MediaEnded += Click_MediaEnded;
            Click.Play();
        }

void Click_MediaEnded(object sender, RoutedEventArgs e)
       {
            NavigationService.Navigate(new Uri("/NavPage.xaml", UriKind.Relative));
       }

【讨论】:

  • 好的,但现在当我按下返回按钮时我无法返回导航,因为当我按下返回按钮时,它会再次播放点击声音(不应该播放)并再次导航到 NavPage
  • 您在按下后退按钮、NavPage 或定义点击媒体的页面时所处的位置?你是否覆盖了后退按钮代码?
  • @Romasz 但是媒体元素在单击按钮时被初始化,这是否意味着 play_Click 会自动被触发?
  • @AmanKhandelwal 是的,你是对的(所以我删除了评论)。尝试检查更改 Click.AutoPlay 是否有帮助。
猜你喜欢
  • 1970-01-01
  • 2011-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多