我的应用程序中有一个 .wav 文件音效。出于某种原因,它在一个地方(一个普通的电话页面)可以正确播放,但是当在其他地方(在用户控件内)使用时它不会播放(尽管我使用的是相同的代码并且代码正在执行)。
奇怪的是(至少对我来说:))如果我在播放声音之前设置了一个断点,然后单击继续,声音将实际在模拟器中播放,这让我觉得我需要做一些额外的事情来让我的用户控件播放听起来正确(因为相同的代码在其他地方工作)。
我像这样在 XAML 中设置我的声音:
<MediaElement x:Name="StampSound"
Source="/Sounds/stamp.wav"
Volume="1"
AutoPlay="False" />
我在 XAML 页面和我的用户控件中使用相同的代码来设置声音。然后,当我想要播放声音时,我使用以下内容:
StampSound.Play()
这在我的主页中正常工作,但在我的用户控件中它不会发出声音(但代码正在执行,如果我在其中放置断点然后继续声音将播放)。
所以我认为我的代码没问题,但也许我在用户控件中遗漏了一些东西。我尝试在 UserControl_Loaded 子中播放声音,在那里我还(成功地)实现了一个与音频一起使用的动画(顺便说一下,与我主页中的声音一致的动画相同)。
这里有一些我不知道的时间类型问题吗?我将不胜感激任何帮助或想法。
这适用于 Windows Phone 8 XAML + VB.net,但我可以使用 C# 代码进行管理。
编辑:找到答案
好的,我在即将发布此内容时找到了答案,但答案是针对一个略有不同的问题,所以我想我会回答这个问题,以防其他人遇到它。
(此处输入链接描述的答案
我显然是在加载声音之前尝试播放声音,所以我只是添加了一个处理程序,用于处理声音何时完成加载并在那里播放声音:
Private Sub StampSound2_MediaOpened(sender As Object, e As RoutedEventArgs) Handles StampSound2.MediaOpened
StampSound2.Play()
End Sub
这对我有用,因为我需要尽快播放声音(即它应该在控件加载后立即播放)。