【问题标题】:Problems figuring out playing wav file解决播放 wav 文件的问题
【发布时间】:2014-12-17 00:50:17
【问题描述】:

任务应该很简单。我有一个带有“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();
    }

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

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

我错过了什么?

【问题讨论】:

  • 我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
  • 我有标签吗?如果很抱歉。并感谢您更正标题。
  • 是的,您遇到了“解决播放 wav 文件 Windows mobile 8.1 C# 的问题”,其中“Windows mobile 8.1 C#”似乎更像元数据而不是数据。

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


【解决方案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();

现在它应该可以很好地处理所有内容了。

【讨论】:

  • 感谢您回答我的问题,以及有关前缀的提示。我将我的 RootElement 命名为 Grid,编辑了 uri 行并附加了 mediaelement,但现在我收到一条错误消息,提示“给定的 System.Uri 无法转换为 Windows.Foundation.Uri”。我已经用了一个小时左右的搜索和调试,但无法弄清楚,尽管它看起来很容易解释。 wav 文件设置为始终复制(是否需要复制?),并且路径看起来正确。有什么线索吗?
  • 我想通了。我将自动播放设置为 false。当我将其设置为 true 时,它​​起作用了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-19
  • 2012-12-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多