多个媒体元素停止工作 wp8


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 代码设置源代码前snare.Source = new Uri("/Music/snare", UriKind.Relative);它也不起作用。如果有人可以帮助我解决这个问题。音频文件真的很短

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

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

要做到这一点,你可能必须使用XNA。这是一个可能会对您有所帮助的链接和一些选定的报价:

作者对Windows 应用商店应用程序/WP8的体验似乎与您的非常接近:

首先,我编写了Windows 8"Metro"风格的应用程序,这些应用程序已经播放过。 听起来不错,所以当我们开始将 Win8 应用程序移植到 WP8 时,并且 了解现在WP8应该使用与Win8相同的内核, 我以为移植声音是轻而易举的。 原来有 两个平台中的一些微妙(和不那么微妙)的差异。

所以他也有同样的问题:

另一个"陷阱" 到目前为止,我们只看到用于播放的MediaElements。 听 起来。但是,在WP8上,事实证明只有一种媒体 元素可以一次播放。所以 – 如果你需要做什么 多个同时播放的音效,就像在游戏中一样? 好吧,这就是我们可以点击XNA库的地方,它是SoundEffect。

最后,他得出了这个结论:

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

可能你只需要在图像的MouseLeftButtonDown事件上更改mediaElement的来源。避免对每个声音使用单独的媒体元素。只需在 xaml 中定义单个媒体元素,并在每个图像事件上相应地更改源。

像这样:

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

最新更新