XNA MediaPlayer. Установщик громкости очень медленный - PullRequest
0 голосов
/ 17 сентября 2010

Я недавно добавил аудио в свою игру, загруженную в классе "Song" из среды XNA.

Казалось, что все работает нормально, пока я не решил добавить возможность изменять громкость песни, используя установщик MediaPlayer.Volume.

Однако, когда я пытаюсь изменить громкость в первый раз, она запускается действительно медленно (например, от 3 до 4 секунд, что довольно много для изменения громкости). После, когда я снова пытаюсь изменить громкость, громкость меняется мгновенно.

По сути, у меня есть три варианта уровня громкости: Высокий , Средний и Низкий ... Так что моя проблема, вероятно, не в том, что я изменяю уровень громкости слишком часто или слишком быстро.

Я бы хотел знать, знает ли кто-нибудь из вас, когда MediaPlayer.Volume может занять больше времени, чтобы я мог проверить, где находится моя проблема.

1 Ответ

2 голосов
/ 17 сентября 2010

Если вы пользуетесь Google, вы обнаружите множество проблем с производительностью MediaPlayer.И часто они зависят от системы, на которой вы работаете.Это связано с тем, что он использует Windows Media Player за кулисами (в Windows).

Вот несколько способов уменьшить проблемы с производительностью:

  • Никогда не читайте значения из MediaPlayer (например,: Volume - это включает использование += для его установки).Сохраняйте фактическое значение самостоятельно и присваивайте его только.
  • В связи с вышеизложенным используйте событие изменения состояния для получения уведомлений об изменении состояния.
  • Поместите использование класса MediaPlayer наотдельный поток (ThreadPool достаточно для Windows) - это решает случаи, когда он просто блокирует ваш основной поток (большинство из них, но в некоторых системах он, очевидно, может блокировать весь процесс или всю систему).
  • Единственный надежный способ устранить проблемы - вообще не использовать MediaPlayer.Вы можете поместить свою музыку в XACT и сжать ее (я думаю, что вы также можете использовать SoundEffect).

Если бы мне пришлось угадывать (и я делаю) - я бы сказал, что перемещение вашей громкости меняетв другую ветку решит вашу проблему.

...