2
private void Image_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
    snare.Play();

}

private void tom3Img_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
    tom3.Play();
}

private void tom2Img_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
    tom2.Play();
}

private void tom1Img_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
    tom1.Play();
}

private void kik_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
    kick.Play();
}

private void lCrash_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
    crashl.Play();
}

private void RCrash_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
    crashr.Play();
}

在 xml 中,每个声音都有单独的元素

<MediaElement Name="snare" HorizontalAlignment="Left" Height="19" 
 Margin="385,566,0,0" VerticalAlignment="Top" Width="42" 
 Visibility="Collapsed" AutoPlay="False" Volume="150" Source="/Music/snare.wav"/>

这些是我的 xml 和 cs 代码,我试图以与 Windows 商店应用程序相同的方式创建架子鼓。问题我有时无法理解某些事件会起作用,如果我对另一个事件进行任何更改就会停止。

文件夹中的所有声音文件调用音乐我尝试在cs中创建一个媒体元素并通过cs代码设置源,exsnare.Source = new Uri("/Music/snare", UriKind.Relative); 它也不起作用。如果有人可以请帮我解决这个问题。音频文件真的很短

4

2 回答 2

2

如果我正确理解了您的需求,那么您的问题是 Windows Phone 一次只能播放一个曲目/文件MediaElement(来源msdn):

当 MediaElement 控件播放音频或视频内容时,任何背景声音或已播放的媒体都会停止。当用户点击控件时,应用程序会启动播放体验。一次只能操作一个 MediaElement 控件。

要做这样的事情,你可能必须使用XNA。这是一个有趣的链接,可能会对您有所帮助以及一些选择的报价:

作者对 Windows Store App/WP8 的体验似乎与您的非常接近:

首先,我编写的 Windows 8 'Metro' 风格的应用程序可以很好地播放声音,所以当我们开始将 Win8 应用程序移植到 WP8 并理解现在 WP8 应该使用与 Win8 相同的内核时,我想移植声音将是一件轻而易举的事。事实证明,这两个平台存在一些微妙(而不是那么微妙)的差异。

所以他也有同样的问题:

另一个“问题” 到目前为止,我们只看到了用于播放声音的 MediaElements。然而,在 WP8 上,事实证明一次只能播放一个且只有一个媒体元素。所以——如果你需要同时播放多个音效,比如在游戏中,该怎么办?好吧,这就是我们可以利用 XNA 库的地方,它就是 SoundEffect。

最后,他得出这个结论:

结论 所以最后,我决定在我的应用程序中使用媒体元素播放背景音乐,这样我就可以随意开始/停止长时间播放的声音文件,并使用 XNA 的 SoundEffect 播放声音效果,速射,同时播放多种声音。似乎对我有用,祝你好运!

于 2013-10-25T22:15:38.500 回答
0

May be you just need to change the source of mediaElement on MouseLeftButtonDown event of your images. Avoid using separate mediaElements for each sound. Just define a single MediaElement in xaml and change the source accordingly on every image event.

Something like this:

private void Image_MouseLeftButtonDown(object sender,     System.Windows.Input.MouseButtonEventArgs e)
{
  snare.Source= new Uri("snare.mp3, UriKind.Relative");
  snare.Play();

}
于 2014-05-13T08:04:19.133 回答