Перейти к основному содержанию

sounds


sounds

Автоматически переведённая страница

К сожалению, на полный ручной перевод у нас не хватает ресурсов.
Если вы увидели ошибку — отправьте пул-риквест с исправлениями (ссылка для редактирования в конце страницы).

Объект sounds содержит методы, позволяющие воспроизводить звуковые эффекты в вашей игре, применять к ним фильтры и изменять их громкость. В редакторе звука также можно установить диапазон значений для фильтров (колебание, искажение, реверберация и т. д.), чтобы добавить разнообразия. Например, это может быть полезно, если нужно немного изменить высоту звуков шагов или монет, чтобы избежать их монотонности.

Кроме того, теперь можно добавлять варианты звуков, и при воспроизведении звука будет случайным образом выбран один из них.

Техническая информация

Начиная с версии 4, ctjs использует библиотеку pixi-soundopen in new window. Вы можете получать экземпляры класса Sound в словаре res.pixiSounds.

Вопроизведение звука и работа с ним

Большую часть времени вы будете играть звук, например, так:

JavaScript
sounds.play('MySound');

Если звук — это музыкальная композиция, вы можете повторять ее воспроизведение так:

JavaScript
sounds.play('MyTrack', { loop: true });

sounds.play(name: string, options?: object)

Воспроизведение звука, созданного в ctjs.

АргументТипОписание
namestringИмя звука
optionsobjectопционально Опции, используемые для воспроизведения звука.
options.startnumberсмещение времени начала, в секундах
options.endnumberКонечное время, в секундах
options.loopbooleanЕсли установить значение true, звук будет воспроизводиться в цикле.
options.filtersfilters.Filter[]Фильтры pixi-sound, которые необходимо применить
options.completeFunctionОбратный вызов, вызываемый при завершении воспроизведения звука.
options.loadedFunctionЕсли звук не предварительно загружен, этот функцию будет вызван при завершении загрузки звукового файла.
options.mutedbooleanЕсли звук по умолчанию замолчен.
options.singleInstancebooleanУстановка значения true останавливает любые воспроизводимые экземпляры.
options.speednumberСкорость воспроизведения звука; по умолчанию используется настройка скорости звука.
options.volumenumberЗаменяет громкость звука; значение по умолчанию: 1.

Возвращает либо экземпляр звука, либо промис, который разрешается в экземпляр звука.
См. IMediaInstanceopen in new window.

sounds.playAt(name: string, position: { x: number, y: number }, options?: object)

Воспроизведение 3D-звука в заданной позиции. Вы можете установить аргумент 'position' как копию, и звук будет следовать за копией при ее перемещении. Чтобы сделать звук неподвижным, передайте объект с неизменными ключами 'x', 'y'. Объект options тот же, что и для метода sounds.play.

Пример: Воспроизвести 3D-звук, который следует за текущей копией

JavaScript
sounds.playAt('MySound', этот);

Пример: воспроизвести 3D-звук под текущей копией, но не следовать за ней

JavaScript
sounds.playAt('МойЗвук', {x: this.x, y: this.y});

sounds.stop(name: string | IMediaInstance)

Остановляет указанный звук при указании имени. В противном случае останавливает все звуки в игре.

sounds.pause(name?: string)

Приостанавливает указанный звук, если указано имя. В противном случае он приостанавливает все звуки в игре.

sounds.resume(name?: string)

Оставляет текущий звук, если указано имя. В противном случае возобновляет все звуки в игре.

Возвращает Булево значение.

sounds.playing(name?: string)

Возвращает, воспроизводится ли сейчас звук с указанным именем, если указано, или какой-либо звук, если не указано.

Возвращает Булево значение.

sounds.volume(name: string | IMediaInstance, volume?: number)

Получает или устанавливает громкость звука, при этом volume принимает значение от 0 до 1, где 1 означает 100% громкости. Если volume не указан, будет возвращена существующая громкость.

Возвращает Number. Текущая/новая громкость звука.

sounds.globalVolume(value: number)

Устанавливает глобальный уровень громкости для всех звуков. 'value' - это число от 0 до 1, где 1 соответствует 100% громкости.

sounds.speed(name: string | IMediaInstance, value?: number)

Устанавливает скорость воспроизведения звука, где 1 соответствует 100%. Если параметр value не указан, будет возвращена текущая скорость.

Возвращает число. Текущую или новую скорость звука.

sounds.speedAll(value: число)

То же самое, что и выше, но для всех звуков.

sounds.toggleMuteAll()

Переключает свойство "mute" для всех звуков.

Возвращает логическое значение. "true", если все звуки заглушены.

sounds.togglePauseAll()

Переключает свойство паузы для всех звуков.

Возвращает логическое значение. true, если все звуки опущены.

sounds.fade(name?: string | IMediaInstance | SoundLibrary, newVolume?, duration?)

Снижает громкость звука до заданного уровня. Может повлиять на конкретный экземпляр или на всю группу.

Аргументы:

  • name: строка | IMediaInstance | SoundLibrary - имя звука или экземпляр, который нужно повлиять. Если пусто, то все звуки стираются.
  • newVolume: число | опционально - новый уровень громкости, где 1 соответствует 100%. По умолчанию 0.
  • duration: число | опционально - длительность перехода в миллисекундах. По умолчанию 1000.
JavaScript
// Снижение громкости всех звуков до нуля (по умолчанию) с длительностью 1000 миллисекунд (по умолчанию).
sounds.fade();
JavaScript
// Увеличение громкости 'MySound' до уровня 1 за 2000 миллисекунд.
sounds.fade('MySound', 1, 2000);

Добавление фильтров к звукам

sounds.addDistortion(name: string, amount: number)

Добавляет фильтр искажения.

АргументТипОписание
namestringИмя звука, к которому нужно применить эффект. Если установить false, то применяет фильтр ко всем звукам.
amountnumberСтепень искажения от 0 до 1. По умолчанию равно 0.

sounds.addEqualizer(name: string, f32: number, f64: number, f125: number, f250: number, f500: number, f1k: number, f2k: number, f4k: number, f8k: number, f16k: number)

Добавляет фильтр эквалайзера.

АргументТипОписание
namestringИмя звука, к которому нужно применить эффект. Если установить false, то применяет фильтр ко всем звукам.
Band frequencesnumberПо умолчанию коэффициент усиления для каждой частоты. По умолчанию равно 0. Рекомендуемые значения варьируются от -40 до 40.

sounds.addMonoFilter(name: string)

Объединяет все каналы в один монофонический канал.

АргументТипОписание
namestringИмя звука, к которому нужно применить эффект. Если установить false, то применяет фильтр ко всем звукам.

sounds.addReverb(name: string, seconds: number, decay: number, reverse: boolean)

Добавляет фильтр реверберации.

АргументТипОписание
namestringИмя звука, к которому нужно применить эффект. Если установить false, то применяет фильтр ко всем звукам.
secondsnumberПродолжительность реверберации. По умолчанию равно 3.
decaynumberДлина затухания. По умолчанию равно 2.
reversebooleanРеверберация в обратном направлении. По умолчанию равно false.

sounds.addStereoFilter(name: string, pan: number)

Добавляет фильтр для стерео панорамирования.

АргументТипОписание
namestringИмя звука, к которому нужно применить эффект. Если установить false, то применяет фильтр ко всем звукам.
pannumberСтепень панорамирования, -1 — левый канал, 1 — правый канал, 0 — центрированный. По умолчанию равно 0.

sounds.addTelephone(name: string)

Добавляет фильтр телефонного звука.

АргументТипОписание
namestringИмя звука, к которому нужно применить эффект. Если установить false, то применяет фильтр ко всем звукам.

NB: Можно добавить несколько фильтров к одному звуку.

JavaScript
sounds.addReverb('MySound', 5, 7);
// Если звук не воспроизводится, он не будет воспроизводиться до тех пор, пока вы не вызовете метод "play".
sounds.play('MySound');

sounds.removeFilter(name: string, filter?: string)

Удаляет фильтр со указанного звука или со всех звуков, если имя установить в false.
Если filter не указан, удаляются все фильтры.

Разные методы

sounds.exists(имя: строка)

Возвращает, существует ли в игре звук с указанным именем. Это не проверяет, полностью ли загружен звук, это просто проверяет наличие метаданных звука в вашей игре.

sounds.load(name: string)

Предзагружает звуковой файл. Это обычно применяется к музыкальным файлам, которые не загружаются по умолчанию перед воспроизведением.

Возвращает Обещание, разрешающее имя загруженного звукового ассета.

Пример: Предзагрузка фонового музыки перед переходом в комнату

JavaScript
sounds.load('BackgroundMusic')
.then(() => {
    rooms.switch('MainRoom');
});

Links:

  • JavaScript: язык программирования, основанный на прототипах, который используется для создания интерактивных веб-страниц.
  • CoffeeScript: язык программирования, компилирующийся в JavaScript, который позволяет писать более краткий и понятный код.

Пример: Предзагрузка нескольких звуковых файлов перед переходом в комнату

JavaScript
var soundsToLoad = [],
    soundNames = ['AmbientMusic', 'BattleMusic', 'VictoryMusic'];

for (var i = 0; i < soundNames.length; i++) {
    soundsToLoad.push(sounds.load(soundNames[i]));
}

Promise.all(soundsToLoad).then(() => {
    rooms.switch('MainRoom');
});