Предыдущая Следующая
Рис. 13.9. Рабочий каталог проекта с добавленными в него звуковыми файлами и проектом XACT
//=========================================================================
#region Dependencies using System;
using System.Collections.Generic; using System.Text; using System.IO;
using Microsoft.Xna.Framework.Audio; #endregion
namespace Audio
{
public enum soundList
{
/// <summary>
Класс Sound 237
/// Прикосновение к ковру-самолету
/// </summary>
Platform,
/// <summary>
/// Падение в пропасть
/// </summary>
Boom,
}
public static class Sound {
private static AudioEngine engine; private static SoundBank soundbank; private static WaveBank wavebank;
/// <summary> /// Инициализация /// </summary>
public static void Initialize()
{
engine = new AudioEngine(«Content\\Sound\\Sound.xgs»);
soundbank =new SoundBank(engine, «Content\\Sound\\Sound Bank.xsb»);
wavebank = new WaveBank(engine, «Content\\Sound\\Wave Bank.xwb»);
}
private static string[] cueNames = new string[]
{
«platform», «boom»,
};
/// <summary>
/// Воспроизведение звука после остановки /// </summary>
public static CuePlay(soundList sound)
{
Cue returnValue = soundbank.GetCue(cueNames[(int)sound]);
returnValue.Play();
return returnValue;
}
/// <summary>
/// Воспроизведение
/// </summary>
public static void PlayCue(soundList sound)
{
soundbank.PlayCue(cueNames[(int)sound]);
}
/// <summary>
/// Обновляем звук
/// </summary>
public static void Update()
{
238 Звуковые эффекты
engine.Update();
}
/// <summary>
/// Останавливаем воспроизведение /// </summary>
public static void Stop(Cue cue) {
cue.Stop(AudioStopOptions.Immediate);
}
} }
Ключевыми фигурами в звуковых проектах, основанных на использовании XACT, являются три класса: AudioEngine, SoundBank и WaveBank. Объявление и создание объектов этих классов, а также загрузка звука в игру всегда происходят в одном и том же ключе. Посмотрите на нижеприведенные строки исходного кода.
private static AudioEngine engine; private static SoundBank soundbank; private static WaveBank wavebank;
public static void Initialize()
{
engine = new AudioEngine(«Content\\Sound\\Sound.xgs»);
soundbank = new SoundBank(engine, «Content\\Sound\\Sound Bank.xsb»);
wavebank = new WaveBank(engine, «Content\\Sound\\Wave Bank.xwb»);
}
В трех первых строках этого блока кода происходит объявление трех объектов. Затем создание или инициализация объектов в данном случае делается в методе Initialize(), но это можно сделать в любом месте на этапе загрузки игры. Создание выше перечисленных объектов всегда происходит именно таким способом, как показано в коде. Это их специфика, или черный ящик, как хотите. Главное, что нужно четко понимать, - это какие пути прописывать в параметрах конструкторов классов AudioEngine, SoundBank и WaveBank. Предыдущая Следующая
|