Предыдущая Следующая
Эта стандартная процедура по созданию объектов классов AudioEngine, SoundBank и WaveBank подгружает в игру имеющиеся звуковые данные. Теперь, чтобы воспроизвести любой файл, необходимо просто вызвать метод PlayCue(), в параметрах которого указать название файла для воспроизведения.
soundbank.PlayCue("boom");
В классе Sound реализация воспроизведения звуковых файлов несколько отличается от того, что я вам показал, но отличается в лучшую сторону. Смысл здесь следующий. Вместо того чтобы в методе PlayCue() явно прописывать название воспроизводимого файла, используется более элегантная конструкция, состоящая из структуры soundList и массива данных cueNames.
public enum soundList {
/// <summary>
/// Прикосновение к платформе
/// </summary>
Platform,
/// <summary>
/// Падение в пропасть
/// </summary>
Boom,
}
private static string[] cueNames = new string[]
{
"platform", "boom",
};
Любые элементы структуры или массива данных всегда ведут свое числовое исчисление от нуля. В структуре soundList присутствуют два названия -Platform и Boom. Для читабельности исходного кода и дальнейшего использования звуковых данных такая запись просто прекрасна, но на самом деле в любой структуре первый элемент (Platform) всегда равен нулю, второй элемент (Boom) - единице и т. д. Аналогичные явления присутствуют и в массиве данных, поэтому если взять метод PlayCue() класса Sound, то получится, что обращение к элементам структуры идет по имени.
public static void PlayCue(soundList sound)
{
soundbank.PlayCue(cueNames[(int)sound]);
}
В классе Sound, кроме метода PlayCue() , есть еще три метода. Первый метод Stop() позволяет останавливать воспроизведение определенного звукового файла.
/// <summary>
/// Останавливаем воспроизведение /// </summary>
public static void Stop(Cue cue)
206 Звуковые эффекты
Воспроизведение звука в игре 207
cue.Stop(AudioStopOptions.Immediate);
}
В свою очередь, второй метод CuePlay() позволяет воспроизводить файл после его остановки. В параметре этого метода необходимо просто передать название структурной переменной, которая отвечает за один из звуковых файлов.
/// Воспроизведение звука после остановки /// </summary>
public static CuePlay(soundList sound)
{
Cue returnValue = soundbank.GetCue(cueNames[(int)sound]);
returnValue.Play();
return returnValue;
Последний, очень важный метод занимается тем, что постоянно обновляет работу звукового движка. Вызов этого метода в дальнейшем должен производиться непосредственно в игровом цикле в методе Update(). Сейчас давайте перейдем к классу Game1 и попрактикуемся в воспроизведении звука в игре. Предыдущая Следующая
|