Интернет магазин музыки, mp3 почтой, заказать mp3 диски

баннер интернет-магазина ножей nifovka.ru

RSS - RSS,
Карта сайта

Rambler's Top100

Написать на e-mail © 2007-2012 г.

Попробовала сделать себе тату хной, по-моему, неплохо получилось.



Теги страницы:

Когда вы уже знаете, как обрабатывать исключительные ситуации, вы можете приступать к написанию CAudioManager, класса, который будет руководить всем вашим звуком в вашей игре. Самый большой движок начинается с единственного заголовочного файла, и этот не будет исключением. Вот так выглядит декларация класса CAudioManager. Очевидно, что в конечном варианте движка будет больше методов, чем здесь, но и это уже неплохое начало. Вы можете увидеть методы для инициализации и деини- цмшшчгщпи движка, равно как и для загрузки звука. Есть также способ получить интерфейс выполнения напрямую. Константа in_PertCbanned показывает число каналов воспроизведения - количество которые вы можете одновременно воспроизводить. Совет. Ваш CD содержит несколько «снимков» проекта звукового движка в том порядке, в каком они соответствуют в каждой главе. Это значит, AudioMan- ager.cpp и AudioManager.h файлы в директории главы 3 включают только выполняемые функции, описанные в главе 3. Файлы Audio Manager в директории главы 4 содержат только исполняемые функции главы 4 плюс модернизации 4 главы. Это позволяет вам следовать за изложением в книге по мере того, как я добавляю характеристики движку, и дает вам несколько разных точек по мере продвижения, в которых вы можете отклониться и начать писать какие-то вещи своим способом. Если вы хотите просто взять звуковой движок той книжки и работать с ним, возьмите законченный звуковой движок в папке AudioEngine на вашем компакт-диске. Он является полнофункциональным.

Init. CAudioManager использует двухфазное создание (two-phase creation). Это такой специальный термин программистов, означающий, что создание объекта требует не только вызова конструктора, но и иьвоиа, инициализирующего метод. Я предпочитаю называть этот метод : хотя я видел, как другие программисты называют его Create, Setup, Initialize или Reset. Двухфазное создание - достаточно удобная идея по ряду причин. Во-первых, она великолепно подходит для консолей и платформ с маленьким количеством памяти (low-memory), таки.ч, как PDA. При использовании таких устройств чем меньше раз игра выделяет память, тем лучше. Таким образом, вы можете использовать двухфазное создание для инициализации всех объектов, которые понадобятся вашей игре, всего один раз, в начале программы. Как только игра началась, все вызовы new запрещаются. Вместо этого, объект просто вызывает метод Init объекта, который восстанавливает первоначальное состояние объекта. Это что-то вроде получения нового объекта без неразберихи с памятью. Звуковой движок этой книги на самом деле не заботится об этом, но зато он заботится о второй причине использования двухфазного создания: контролем над когда создается объект. Делая движок настолько гибким, насколько это возможно, двухфазное создание позволяет вам полностью контролировать, когда произойдет инициализация. Таким образом, движок использует двухфазное создание. Из трех аргументов функции два необязательны - требуется только обработка окна. Хотя, если хотите, вы можете также установить, должен ли звук быть моно или стерео и максимальное число, которое может быть для него приготовлено. Каналы занимают немного места (если они не используются), поэтому нет ничего страшного в том, чтобы взять больше, чем необходимо. По умолчанию эта величина равна 128.

Код начинается с инициализации СОМ и взятия интерфейса Loader Dire a Music. Как только он получил объект Loader (загрузчика), он получает также объект Performance. Все эти вызовы используют CoCreatelnstance, функцию COM API, которую вы можете использовать, чтобы создать любой СОМ объект. У некоторых других компонентов все CoCreatelnstance содержание скрыто внутри функций, но в Direct fv: usic слишком много СОМ интерфейсов, чтобы это можно было осуществить, поэтому вы должны иметь дело напрямую с функцией CoCreatelnstance. Что существенно, CoCreatelnstance создает объект определенного класса и интерфейс, чтобы взаимодействовать с этим новым объектом. С начала и до конца аргументы определяют ID класса. Как только код создал все свои объекты, он вызывает метод InitAudio из интерфейса IDirectMnsicPes'torniiiiueS, который он только что создал. InitAudio инициализирует воспроизведение и настраивает устанавливаемую по умолчанию звуковую дорожку. Вы можете видеть, что код проверяет параметр stereo и устанавливает либо DMl.iS__APAT'r-i_DYNA.\1lC _S'I Li- EO, либо DMUS_APATH_DY1M.AM IС MONO. Я должен упомянуть, что есть еще две опции, включающие (для создания трехмерных звуков, что вы изучите в последующих главах) и DUS_APATH_SHARED_STEREOPLUSREVERB, обычно используемый для обогащения музыки с применением искусственного эха. Обратите внимание, что код проверяет значение, возвращаемое InitAudio для DSHRR NODRiVHR. Это специальная ошибка, которая показывает, что DirectX Audio не может найти никакого звукового оборудования. Когда DirectX Audio видит код выводит на экран сообщение, информирующее игрока о том, что его звуковое оборудование не найдено.

Принимая, что все работает и. следовательно, нет переданных ошибок, функция завершает работу, выставляя флаг m_InitGood в true, чтобы все последующие функции могли видеть, может ли Manager воспроизводить звук. Код начинается с вызова Stop и CloseDown для m_Pei'formarice. предполагая, что это не NULL. Затем он отключает объекты «^Performance и rn_Loader и очищает флаг m InitGood.