Урок предназначен для новичков, у которых были проблемы с mp3. Для успешной работы, нужны хотя бы 2 mp3 файла. Начиная с 3 версии, XNA содержит встроенную поддержку для mp3 файлов. Обращение к загруженным песням происходит через абстрактный класс MediaPlayer.
Для начала создаем список типа Songs:
1
List ListOfTracks=new List(12);
Желательно заранее знать количество треков.
Добавление файла в проект: Перетаскиваем нашу музыку в Content. Среда автоматически подключит добавленные файлы к проекту. Например если вы добавили в проект MySong.mp3, то имя, присвоенное автоматом будет равно MySong. При желании его можно поменять через панель свойств контента.
Переходим к методу загрузки контента:
Используем самый простой способ загрузки и добавления песни в список песен ListOfTracks.
1
ListOfTracks.Add(Content.Load("MySong"));
В качестве указателя на песню используется AssetName равное MySong.
И так, песня добавлена, осталось лишь создать метод проигрывания песен из списка. Для большей интересности, можно сделать их проигрывание случайным, например используя метод генерации случайных чисел.
1
Random rnd =new Random();
Чтобы узнать состояние MediaPlayer, т.е. играет ли он музыку, можно использовать: MediaPlayer.State Одно из ключевых значений может быть MediaState.Stopped
Чтобы правильно указать диапозон для генератора чисел, следует узнать количество песен, например так:
1
int _totalTracks = ListOfTracks.Count;
Для хранения номера вновь запускаемой песни используем переменную:
1
int _newTrackIndex =0;
Запускаем цикл, который будет продолжатся, пока не найдется песня не равная только-что проигранной.
Для случайного выбора номера песни ( ее индекса в списке ) используем метод:
1
_newTrackIndex = rnd.Next(0, _totalTracks -1);
Если _newTrackIndex отличен от индекса песни, которая была проиграна, то:
- Заменяем индекс проигранной песни на индекс новой:
1
CurrentTrack = _newTrackIndex;
- Прерываем цикл.
Теперь следует найти нашу песню по индексу в списке песен. Для этого создаем счетчик-переменную:
1
int i =0;
Запускаем цикл поиска по списку песен:
Т.к. мы знаем, что запихали объекты типа Songs в список ListOfTracks, то ищем именно Songs.
foreach (Song oSong in ListOfTracks)
Если индекс песни в списке i не равен индексу, который мы ищем, продолжаем поиск со следующим индексом. i++;
Иначе: - Устанавливаем уровень звука музыки:
1
MediaPlayer.Volume= 0.5f;
( значение должно быть в диапозоне между 0 и 1 ).
Находим песню в списке с индексом равным i. Когда песня найдена проигрываем ее.
1
MediaPlayer.Play(oSong);
- прерываем цикл;
Вот и все. Краткий отрывок кода можно увидеть ниже, надеюсь понятно :)