我希望在用户点击时发出哔声效果。
我有一个beep.mp3
文件添加到项目中(不在文件夹中)。在其属性中,我看到Build Action
设置为Content
和这个MediaElement:
<MediaElement Name="beep" Source="beep.mp3" Volume="1" AutoPlay="False"/>
然后我听不到任何声音:
beep.Play();
答案 0 :(得分:0)
在Silverlight项目中有类似的东西。尝试将其添加到Assets文件夹中,设置为Content / Resource并始终复制到输出。
答案 1 :(得分:0)
我构建了一个简单的示例(遵循您的代码),一切都应该没问题。为了确保一切正常,我将执行下面描述的一些检查:
在XAML中:
<Button x:Name="myButton" VerticalAlignment="Cener" Content="BEEP"/>
<MediaElement Name="beep" Source="beep.mp3" Volume="1" AutoPlay="False" MediaFailed="beep_MediaFailed" MediaOpened="beep_MediaOpened"/>
代码背后:
public MainPage()
{
InitializeComponent();
myButton.Click += (sender, e) => { beep.Play(); };
// this below checks if your file exists
if (Application.GetResourceStream(new Uri("beep.mp3", UriKind.Relative)) == null)
MessageBox.Show("File not Exists!");
}
private void beep_MediaFailed(object sender, ExceptionRoutedEventArgs e)
{
// Show Message when opening failed
MessageBox.Show("There was an error: " + e.ErrorException.Message);
}
private void beep_MediaOpened(object sender, RoutedEventArgs e)
{
// as it's subscribed in xaml, juts after opening the App you should hear beep
beep.Play();
MessageBox.Show("Media opened");
}
首先 - 在构造函数中如果我的beep.mp3存在,我会执行检查(检查我是否可以将其作为资源流获取)。如果一切正常,那么你就不应该看到消息。然后过一会儿你应该看到其中一条消息(失败/打开)。如果打开,那么你也应该听到beep.mp3。
请注意,如果您在InitializeComponent之后放置beep.Play(),那么您可能不会听到它 - 因为媒体必须在播放之前打开(当然通常不需要订阅该事件)如果你不需要,但如果你遇到问题,那么很高兴知道媒体是否被打开了。)
另一方面,我可能会按照WiredPraire建议(在评论中)并使用SoundEffect
播放短音。
希望这有点帮助。