在Windows 8 Metro App(C#/ XAML)中同时播放两种声音

时间:2012-06-09 12:21:42

标签: c# audio windows-8 microsoft-metro

我是Windows 8 Metro应用程序(C#/ XAML): 如何触发相同的声音效果两次,以便同时播放。

第二场比赛应该在第一场比赛结束前开始。

相关问题是:

Playing two sounds simultaneously c#Play two sounds simultaneusly

我发现XNA的这个类可以满足我的需求,但在Metro下不可用: http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.audio.soundeffectinstance.aspx

1 个答案:

答案 0 :(得分:17)

为每个声音效果创建一个单独的媒体元素。

(不确定我每次都需要重新定位文件)

  public async void PlayLaserSound()
    {
        var package = Windows.ApplicationModel.Package.Current;
        var installedLocation = package.InstalledLocation;
        var storageFile = await installedLocation.GetFileAsync("Assets\\Sounds\\lazer.mp3");
        if (storageFile != null)
        {
            var stream = await storageFile.OpenAsync(Windows.Storage.FileAccessMode.Read);
            MediaElement snd = new MediaElement();
            snd.SetSource(stream, storageFile.ContentType);
            snd.Play();
        }
    }