为WP Game Library制作正确的URI

时间:2012-01-31 20:41:49

标签: c# .net windows-phone-7 xna

我正在尝试创建一个包含声音的库,但如果我使用在线uri,我无法使URI工作

new Uri("http://www.archive.org/download/BrahmsViolinConcerto-Heifetz/03Iii.AllegroGiocosoMaNonTroppoVivace.mp3")

它工作正常,因此问题是正确链接到我项目中的文件夹

我在我的WP Game Librarys文件夹中我有\ Sounds \ letters,在该文件夹中是一个名为a.wma的声音

我的加载方法是

public void PlayLetter(string letter)
    {
        try
        {
            Initialize();
            FrameworkDispatcher.Update();
            var uri = new Uri(@"/Sounds/letters/" + letter + ".wma", UriKind.Relative);
            var song = Song.FromUri("sound", uri);
            MediaPlayer.Play(song);
        }
        catch(Exception e)
        {
            Console.WriteLine(e.ToString());
        }
    }

当然,当它失败时,我将字符串“a”作为参数

我还将声音文件包含在我的项目中,如

enter image description here

我刚收到一个

  

Microsoft.Xna.Framework.dll中出现'System.InvalidOperationException'类型的第一次机会异常

但它是一个uri问题,我确信我尝试了一个工作得很好的在线URI

另外,我对2件事情有疑问,MediaPlayer在游戏中使用是正确的吗?图书馆可以播放声音(甚至包含它们)

1 个答案:

答案 0 :(得分:0)

XNA中的典型事情是使用SoundEffectInstance:

http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.audio.soundeffectinstance.aspx

不幸的是,SoundEffectInstance仅适用于wav文件。如果要播放较长的音乐文件 - 您可以使用MediaElement - 但这样只允许一次播放单个压缩音频文件。另一种选择可能是使用MediaPlayer类从MediaLibrary播放压缩。您还可以将自己的压缩音频文件保存在MediaLibrary中以从那里播放。参见:

http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.media.medialibrary.songs.aspx