Сделайте правильный URI для WP Game Library - PullRequest
2 голосов
/ 01 февраля 2012

Я пытаюсь создать библиотеку со звуками в ней, но я не могу заставить работать URI, если я использую сетевой URI, такой как

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

, он работает нормально, поэтому проблема связана с правильным связываниемв мои папки в моем проекте

My в моей папке 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

Я просто получаю

Первое исключение типа «System.InvalidOperationException» произошло в Microsoft.Xna.Framework.dll

Но этоЯ уверен, что когда я попробовал онлайновый URI, который работал нормально

Кроме того, я сомневаюсь в двух вещах, является ли MediaPlayer правильным выбором для игры?И может ли библиотека воспроизводить звуки (или даже содержать их)

1 Ответ

0 голосов
/ 01 февраля 2012

Типичная вещь в XNA - использовать SoundEffectInstance:

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

К сожалению, SoundEffectInstance работает только с файлами WAV. Если вы хотите воспроизводить более длинные музыкальные файлы - вы можете использовать MediaElement - но это позволяет воспроизводить только один сжатый аудиофайл одновременно. Другим вариантом может быть воспроизведение сжатых данных из MediaLibrary с использованием класса MediaPlayer. Вы также можете сохранить свой собственный сжатый аудиофайл в MediaLibrary, чтобы воспроизвести его оттуда. См:

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

...