2012-04-17 2 views
2

Я получил словарь для хранения SoundEffects в, как:XNA SoundEffect не может быть загружен из файла

public static Dictionary<string, SoundEffect> Hangok = new Dictionary<string, SoundEffect>(); 

I нагрузки звуки из файлов (нормальный формат .wav), как:

GStatic.Hangok.Add(Azonosító, SoundEffect.FromStream(File.OpenRead(Azonosító))); 

, где Azonosító было именем файла.

Все в порядке, файлы загружены, кроме одного; создается исключение:

Операция не действительна из-за текущего состояния объекта.

, что не так много информации для меня. Может ли кто-нибудь объяснить это сообщение об ошибке ИЛИ сказать мне, почему SoundEffect.FromStream не читается? Зачем? Когда? Обходной путь?

Заранее спасибо: Петера

+1

Это случается, только если вы используете не-английские символы для имени файла? Не могли бы вы попытаться загрузить тот же файл, но использовать только английские символы? Если это не работает, убедитесь, что ваш .wav является либо 8-битным, либо 16-битным аудио (попробуйте добавить его в Content Project, чтобы увидеть, компилируется ли он). – neeKo

+0

У него не было проблем с именем файла и битами. Я также проверил контент-менеджера, даже «в другой программе», потому что я не хотел публиковать эту программу. Это также дало сообщение об ошибке. Наконец, я попробовал что-то еще (ответ на этот вопрос), и выяснилось, что файл был моно. –

ответ

1

Не полное, но работающее решение этой проблемы. «Отвечать на мой вопрос» только потому, что он может быть полезен другим разработчикам, которые также не знают, в чем проблема.

try 
    { 
     GStatic.Hangok.Add(Azonosító, SoundEffect.FromStream(File.OpenRead(Azonosító))); 
    } 
    catch 
    { 
     GStatic.Hangok.Add(Azonosító, new SoundEffect(File.ReadAllBytes(Azonosító), 11025, AudioChannels.Mono)); 
    } 

И хорошо: я не получил ни малейшего представления, почему вы не можете загрузить этот файл в обычном порядке, и поэтому вы можете загрузить так, как в обработчике исключений. Наличие файла в моно не должно быть такой большой проблемой. Если кто-то знает, напишите примечание/комментарий.

1

Я использую ContentManager для загрузки в SoundEffect-х. Поместите файл wav в проект содержания, и он должен просто загрузиться.

E.g.

SoundEffect s = Content.Load<SoundEffect>("name"); 
+0

Спасибо, но я не хочу использовать контент-менеджера. Я предпочитаю загружать из файла. –

Смежные вопросы