Звуковые эффекты
Звуковые эффекты
Неплохо бы добавить в игру звуковые эффекты. К сожалению, библиотека .NET Compact Framework пока не поддерживает воспроизведение звуковых файлов при помощи управляемого кода. Поэтому придется воспользоваться механизмом Platform Invoke (P/Invoke). В главе, посвященной вызовам функций Windows API, эта тема будет освещаться подробнее
Для воспроизведения звуков можно встроить звуковой файл в саму программу, как это делалось с изображениями, либо проигрывать сам звуковой файл, который расположен где-то в файловой системе.
В этом проекте требуется создать отдельный класс для воспроизведения звуков. Нужно щелкнуть правой кнопкой мыши на проекте Bouncer в окне Solution Explorer и выполнить команду контекстного меню Add?New Item... В открывшемся окне нужно выбрать элемент Class и задать имя Sound.cs. После нажатия кнопки Add новый класс будет добавлен в проект.
Класс Sound будет иметь два метода. Один метод создает экземпляр класса Sound, читая данные из заданного файла. Второй метод предназначен для проигрывания звука. Также в составе класса будет находиться свойство, позволяющее настраивать громкость звука.
В начале файла Sound.cs надо расположить строки для подключения используемых пространств имен, как показано в листинге 11.36.
Листинг 11.36
using System.Runtime.InteropServices;
using System.IO;
Наш пример со звуком просто хранит в памяти байтовый массив с аудиоматериалом. Для обращения к этому блоку используется функция операционной системы, способная производить звуки. В классе Sound блок памяти объявляется так, как показано в листинге 11.37.
Листинг 11.37
/// <summary>
/// массив байтов, содержащий данные о звуке
/// </summary>
private byte[] soundBytes;
Эта конструкция не создает массив, а только объявляет его. Массив будет создан при конструировании экземпляра класса, ведь изначально размер звукового файла неизвестен.
Код конструктора приведен в листинге 11.38.
Листинг 11.38
/// <summary>
/// Создание экземпляра sound и хранение данных о звуке
/// </summary>
/// <param name="soundStream">поток для чтения звука</param>
public Sound(Stream soundStream) {
// создаем массив байтов для приема данных
soundBytes = new byte[soundStream.Length];
// читаем данные из потока
soundStream.Read(soundBytes, 0, (int)soundStream.Length);
}
Поток связывается с файлом или другим источником данных. Он имеет свойство Length, определяющее размер массива. Метод Read применяется для получения информации, после чего прочитанные байты сохраняются в массиве. Звуковые файлы хранятся в виде ресурсов, как и изображения.
В проект надо добавить звуковые файлы click.wav и burp.wav и для их свойства Build Action задать значение Embedded Resources. Теперь доступ к звуковым файлам получить очень просто, что иллюстрирует код, приведенный в листинге 11.39.
Листинг 11.39
/// <summary>
/// Звук, воспроизводимый при столкновении с батоном хлеба
/// </summary>
private Sound batHitSound;
/// <summary>
/// Звук, воспроизводимый при столкновении с помидором
/// </summary>
private Sound tomatoHitSound;
// Получим звук при столкновении с батоном хлеба
batHitSound = new Sound
(execAssem.GetManifestResourceStream(@"Bouncer.click.wav"));
// Получим звук при столкновении с помидором
tomatoHitSound = new Sound
(execAssem.GetManifestResourceStream(@"Bouncer.burp.wav"));
Для воспроизведения звука в класс Sound надо добавить метод Play, как показано в листинге 11.40.
Листинг 11.40
/// <summary>
/// Управление звуком в игре (Включать или выключать)
/// </summary>
public static bool Enabled = true;
/// <summary>
/// Проигрываем звук
/// </summary>
public void Play() {
if (Sound.Enabled) {
WCE_PlaySoundBytes(soundBytes, IntPtr.Zero,
(int)(Flags.SND_ASYNC | Flags.SND_MEMORY));
}
}
Метод Play проверяет флаг переменной Enabled. С его помощью можно легко включать или выключать звук в игре. Воспроизведение звука обеспечивается вызовом функции Windows API WCE_PlaySoundBytes, что иллюстрирует код, приведенный в листинге 11.41.
Листинг 11.41
private enum Flags {
SND_SYNC = 0x0000,
SND_ASYNC = 0x0001,
SND_NODEFAULT = 0x0002,
SND_MEMORY = 0x0004,
SND_LOOP = 0x0008,
SND_NOSTOP = 0x0010,
SND_NOWAIT = 0x00002000,
SND_ALIAS = 0x00010000,
SND_ALIASID = 0x00110000,
SND_FILENAME = 0x00020000,
SND_RESOURCE = 0x00040004
}
/// <summary>
/// Функция Windows API для воспроизведения звука.
/// </summary>
/// <param name="szSound">Массив байтов, содержащих данные /// </param>
/// <param name="hMod">Дескриптор к модулю, содержащему звуковой
/// ресурс</param>
/// <param name="flags">Флаги для управления звуком</param>
/// <returns></returns>
[DllImport("CoreDll.DLL", EntryPoint = "PlaySound", SetLastError = true)]
private extern static int WCE_PlaySoundBytes( byte[] szSound,
IntPtr hMod, int flags);
Теперь, когда создан экземпляр класса Sound, можно воспроизводить звук при столкновении сыра с батоном хлеба. Соответствующий код приведен в листинге 11.42.
Листинг 11.42
// если сыр движется вниз
if (cheeseRectangle.IntersectsWith(breadRectangle)) {
// столкновение
// воспроизводим удар
batHitSound.Play();
}
Можете запустить проект, чтобы проверить работу звука. Также можно добавить звук при столкновении сыра с помидорами. Этот код приведен в листинге 11.43.
Листинг 11.43
if (cheeseRectangle.IntersectsWith(tomatoes[i].rectangle)) {
// воспроизводим звук столкновения сыра с помидором
tomatoHitSound.Play();
}
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Сохраняем видео и звуковые файлы с YouTube.com, Rutube.ru, Vkontakte.ru и других сервисов
Сохраняем видео и звуковые файлы с YouTube.com, Rutube.ru, Vkontakte.ru и других сервисов Не совсем в тему главы, но все же я решил включить этот раздел сюда, как относящийся к скачиванию.Многие из вас просматривали видео в онлайн на соответствующих сервисах и некоторые из этого числа
Звуковые карты
Звуковые карты Звуковые карты стали незаменимой частью современного компьютера, они преобразовывают звук в цифровой сигнал, и наоборот. Поскольку ПК без возможностей прослушивания музыки и записи звука с внешних устройств вряд ли будет кому-либо нужен, практически все
Наушники или звуковые колонки?
Наушники или звуковые колонки? Если за компьютером вы сидите один, то лучше использовать наушники, чем звуковые колонки, потому что они передают звук прямо в уши, а от колонок звуковая волна распространяется во все стороны. Таким образом, дойдя до микрофона, она передается
Звуковые настройки
Звуковые настройки Отрегулировать громкость звука и протестировать работу кодеков можно с помощью меню Settings | Sound Input/Output Settings (Установки | Исходящего и приходящего звука).Рассмотрим параметры открывшегося диалогового окна (рис. 4.17). ? Output Volume (Громкость приходящего
Звуковые события
Звуковые события Звуковое сопровождение помогает лучше ориентироваться в происходящих событиях, и Windows XP имеет большое количество заготовок, необходимо только связать событие с конкретным звуковым файлом. Например, при получении писем – один звуковой сигнал, при
Введение в эффекты
Введение в эффекты В программе доступно более 40 специальных эффектов и преобразователей звука. Все эффекты можно разделить на группы.• Эффекты эха – создают эффекты, добавляющие эхо.• Эффекты высоты тона – создают эффекты звучания, основанные на изменении высоты
Вкладка Звуковые эффекты
Вкладка Звуковые эффекты Pinnacle Studio предоставляет возможность проводить разнообразные действия со звуковыми дорожками. Естественно, в фильм можно добавлять всяческие звуковые эффекты, воспроизводимые одновременно с оригинальными звуковыми дорожками исходного видео
Звуковые дорожки
Звуковые дорожки Для звукового сопровождения фильма в Pinnacle Studio Plus предусмотрено целых четыре дорожки (режим Линия времени). Все дорожки показаны на рис. 10.1. Рис. 10.1. Аудиодорожки в окне Фильм• Аудиодорожка основного видео (1) – сюда автоматически помещается содержимое
Звуковые эффекты
Звуковые эффекты В программе Studio также реализовано несколько звуковых эффектов, некоторые из которых могут оказаться весьма полезными. Для применения эффектов к выделенному аудиоклипу используется инструмент Добавление аудиоэффектов (последний в
Звуковые сигналы BIOS
Звуковые сигналы BIOS Сигналы BIOS разных производителей несколько различаются, поэтому мы опишем только наиболее типичные, часто повторяющиеся комбинации.• Сигналов нет, изображение отсутствует. Будем надеяться, что вы просто не включили компьютер. В менее благоприятном
Звуковые и текстовые сигналы AwardBIOS
Звуковые и текстовые сигналы AwardBIOS Комбинации звуковых сигналов AwardBIOS приведены в табл. П1.1.Таблица П1.1. Звуковые сигналы AwardBIOS Расшифровка текстовых сигналов AwardBIOS приведена в табл. П1.2.Таблица П1.2. Текстовые сообщения
Звуковые и текстовые сигналы AMIBIOS
Звуковые и текстовые сигналы AMIBIOS Комбинации звуковых сигналов AMIBIOS приведены в табл. П1.3.Таблица П1.3. Звуковые сигналы AMIBIOS Расшифровка текстовых сигналов AMIBIOS приведена в табл. П1.4.Таблица П1.4. Текстовые сообщения
Звуковые и текстовые сигналы PhoenixBIOS
Звуковые и текстовые сигналы PhoenixBIOS Комбинации звуковых сигналов PhoenixBIOS приведены в табл. П1.5.Таблица П1.5. Звуковые сигналы PhoenixBIOS Расшифровка текстовых сигналов PhoenixBIOS приведена в табл. П1.6.Таблица П1.6. Текстовые сообщения
Глава 2 Звуковые сообщения компьютера
Глава 2 Звуковые сообщения компьютера Особо критические ситуации Один короткий сигнал при запуске компьютера свидетельствует о том, что каких-либо критических неисправностей не обнаружено. Но если сигналов несколько – значит, программа самодиагностики компьютера
Звуковые процессы
Звуковые процессы К звуковым процессам можно отнести следующие операции:• слияние волновых форм;• инверсия;• амплитудные преобразования разного рода;• устранение смещения по постоянному току;• нормализация;• расширение панорамы;• частотная коррекция и
Звуковые эффекты
Звуковые эффекты Звуковые эффекты добавляют звучанию особый колорит, а иногда меняют звук до неузнаваемости.Задержка сигналовК эффектам, основанным на задержке сигнала, относятся следующие:• дилэй (от англ. delay – задержка);• реверберация (от англ. reverberation –