Класс звуковой системы
Сперва я опишу структуру класса звуковой системы, которая показана на рис.7.8.
Рис. 7.8. Структура класса звуковой системы
Обратите внимание, что на рисунку показаны три главных метода класса и два главных члена данных. В классе также есть обычные конструктор и деструктор, но на рисунке они не показаны, поскольку присутствуют в любом классе.
Три метода называются hrInitSoundSystem(), hrLoadSound() и hrPlaySound(). Достаточно прямолинейно, правда? Функция инициализации вызывается один раз для каждого экземпляра игры. Поскольку у вас должен быть только один экземпляр, это означает, что вы один раз вызываете функцию и она делает всю необходимую работу. Функция загрузки звука должна вызываться один раз для каждого звукового файла. Нет никакой необходимости загружать один и тот же звук несколько раз, если только вы действительно не хотите этого по каким-то причинам. Функция воспроизведения звука может и, возможно, будет, вызываться несколько раз для одного и того же звука. Нет никаких ограничений того, сколько раз можно воспроизводить звук.
Два основных члена данных, m_pLoader (IDirectMusicLoader8) и m_pPerformance (IDirectMusicPerformance8), предоставляют классу необходимые интерфейсы объекта. Как вы, возможно, помните, загрузчик отвечает за загрузку звуковых файлов, а объект исполнителя осуществляет воспроизведение звука.