Работа со звуком

Добавление аудио в проект

Последнее обновление: 14.11.2015

При добавлении аудиофайлов в проект нам надо учитывать поддержку данного типа файлов на целевой платформе, особенно, если мы создаем кроссплатформенное приложение. Одни системы могут поддерживать один типы файлов, которые другие могут не поддерживать. И в этой связи проще использовать относительно универсальный формат - mp3.

Общий механизм добавления аудиофайлов в проект аналогичен добавлению файлов изображений. Перейдем в проекте папку Content и затем нажмем на Content.mgcb. Далее в открывшемся окне нажмем правой кнопкой мыши на Content и выберем в контекстном меню Add->Existing Item:

Добавление в MonoGame звуковых файлов аудио

Выберем какой-либо файл mp3. И затем в проект будет добавлен аудиофайл:

Добавление в MonoGame mp3

Теперь вначале рассмотрим, как мы можем запустить проигрывание мелодии при запуске игры на примере простейшего кода:

using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;

namespace Game1
{
    public class Game1 : Game
    {
        GraphicsDeviceManager graphics;
        SpriteBatch spriteBatch;
        Song song;

        public Game1()
        {
            graphics = new GraphicsDeviceManager(this);
            Content.RootDirectory = "Content";
        }

        protected override void Initialize()
        {
            base.Initialize();
        }

        protected override void LoadContent()
        {
            spriteBatch = new SpriteBatch(GraphicsDevice);
			// загружаем ранее добавленный ресурс audio1
            song = Content.Load<Song>("audio1");
			// начинаем проигрывание мелодии
            MediaPlayer.Play(song);
			// повторять после завершения
            MediaPlayer.IsRepeating = true;
			// прикрепляем обработчик изменения состояния проигрывания мелодии
            MediaPlayer.MediaStateChanged += MediaPlayer_MediaStateChanged;
        }
        
        void MediaPlayer_MediaStateChanged(object sender, System.EventArgs e)
        {
            MediaPlayer.Volume -= 0.1f;
        }

        protected override void UnloadContent()
        {
        }

        protected override void Update(GameTime gameTime)
        {
            KeyboardState keyboardState = Keyboard.GetState();

            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == 
					ButtonState.Pressed || keyboardState.IsKeyDown(Keys.Escape))
                Exit();  
        }
        
        protected override void Draw(GameTime gameTime)
        {
            GraphicsDevice.Clear(Color.CornflowerBlue);
            base.Draw(gameTime);
        }
    }
}

Для проигрывания нам необходимо добавить пространство имен Microsoft.Xna.Framework.Media.

Сама мелодия будет представлять объект Song. Этот ресурс загружается в приложение аналогично графическим ресурсам:

song = Content.Load<Song>("audio1");

Также для проигрывания аудио необходим объект класса MediaPlayer. Он предоставляет ряд методов, позволяющих управлять воспроизведением:

  • Play(): начать воспроизведение с начала

  • Pause(): приостановить воспроизведение

  • Resume(): возобновить воспроизведение

  • Stop(): остановить воспроизведение

В дополнение к методам данный класс предоставляет также ряд свойств, которые также могут использоваться. В данном случае мы используем два свойства: IsRepeating указывает, надо ли повторять мелодию после ее окончания, и Volume хранит текущий уровень звука (от 0.0 до 1.0).

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

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850