搞清楚播放wav文件的问题

时间:2014-12-17 00:50:17

标签: c# audio windows-phone-8 visual-studio-2013

任务应该很简单。我有一个带有“Tapped”偶数处理程序的图像,我想在点击它时播放一个wav文件。

<Image x:Name="Snd_abort_1" Width="100" Height="100" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,10,0,0" Source="Assets/Tiles/A/abort_1.png" Tapped="Snd_abort_1_Tapped"></Image>

private void Snd_abort_1_Tapped(object sender, TappedRoutedEventArgs e)
    {
        MediaElement myMediaElement = new MediaElement();
        myMediaElement.AutoPlay = false;
        myMediaElement.Source = new Uri("ms-appx:///Assets/Sounds/DukeNukem/abort.wav");
        myMediaElement.Play();
    }

enter image description here

由于某些特殊原因,这不起作用。 我尝试调试点击并触发,但没有错误,没有声音。

我在模拟器和Lumia 930设备上都试过了。

我错过了什么?

1 个答案:

答案 0 :(得分:1)

您不需要使用ms-appx:为文件添加前缀,只需执行

即可
myMediaElement.Source = new Uri("Assets/Sounds/DukeNukem/abort.wav", UriKind.Relative);
myMediaElement.Play();

不幸的是,虽然这是正确的。这种代码隐藏方法仍然无效。因为myMediaElement不是VisualTree的一部分(因为你是动态的)。

要解决此问题,只需将其添加到根网格/面板

即可
myMediaElement.Source = new Uri("Assets/Sounds/DukeNukem/abort.wav", UriKind.Relative);
this.ContentPanel.Children.Add(myMediaElement);
myMediaElement.Play();

现在它应该可以很好地适应所有事情。