多个MediaElement停止工作wp8

时间:2013-10-25 21:55:38

标签: c# windows-phone-8 mediaelement

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); 它也不起作用。如果有人能帮我解决这个问题。 音频文件真的很短

2 个答案:

答案 0 :(得分:2)

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

  

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

要做这样的事情,你可能必须使用XNA。这是一个有用的link,可以帮助您和一些选择的引号:

作者对Windows应用商店/ WP8的体验似乎与您的相近:

  

首先,我编写了Windows 8'Metro'风格的应用程序   听起来不错,所以当我们开始将Win8应用程序移植到WP8时,AND   理解现在WP8应该使用与Win8相同的内核,   我认为移植声音会很轻松。原来有   两个平台的一些微妙(而不是那么微妙)的差异。

所以他也有同样的问题:

  

另一个'陷阱'   到目前为止,我们只看过MediaElements   声音。但是,在WP8上,它只有一个媒体   元素可以一次播放。那么 - 如果你需要怎么做   多个同步声音效果在一起玩,如在游戏中?   好吧,那就是我们可以点击XNA库和它的SoundEffect。

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

  

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

答案 1 :(得分:0)

您可能只需要在图像的MouseLeftButtonDown事件上更改mediaElement的来源。 避免为每个声音使用单独的mediaElements。只需在xaml中定义单个MediaElement,并在每个图像事件上相应地更改源。

这样的事情:

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

}