Предыдущая Следующая
Итогом всех этих незамысловатых действий стало создание проектного файла Sound.xap. Что нам это дало? В момент компиляции проекта в работу вступит Content Pipeline, который своими внутренними сервисами на основе проектного файла Sound.xap произведет преобразование всех звуковых файлов проекта в три
специфических файла: Wave Bank.xwb, Sound Bank.xsb и Sound.xgs. Именно из этих трех файлов в дальнейшем будет происходить воспроизведение звука в игре. То есть после того как вы откомпилируете проект, в рабочем каталоге проекта в папках Debug или Release == Content == Sound появятся новые файлы Wave Bank.xwb, Sound Bank.xsb и Sound.xgs - и вся работа программы со звуковыми данными будет происходить именно с этими файлами.
13.2. Класс Sound
Для работы со звуковыми данными в игре лучше создать отдельный класс, который вы всегда можете со временем усовершенствовать, а также использовать в любых других своих проектах. Так поступим и мы, но свой класс писать не будем, а возьмем уже готовое решение, поставляемое в комплекте с Spacewar Windows Starter Kit. В частности, класс Sound, который реализован достаточно просто и элегантно. Немного переделав его под свой проект, мы получаем вполне функциональный класс. Давайте посмотрим сначала на весь исходный код класса Sound, представленный в листинге 13.1, а затем перейдем к его анализу.
202 Звуковые эффекты
Класс Sound 203
Рис. 13.8. Сохранение проекта XACT в каталоге создаваемого приложения
//=========================================================================
/// <summary> /// Глава 13 /// Листинг 13.1 /// Проект: Audio /// Класс: Sound /// <summary>
//=========================================================================
#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>
/// Прикосновение к платформе
/// </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"); Предыдущая Следующая
|