Главная » Статьи » Учебник: теория

Звук в Panda3D
Звуковая система Panda3D позволяет загружать звуки и музыку.Разница между ними появляется при использовании 3D звука,а при использовании 2D звука,которое описано в этой статье,термины "звук" и "музыка" пусть будут обозначать просто звуковой файл.
В обычном случае заголовок для импорта обыкновенного звука в скрипте уже есть,он заключается в

import direct.directbase.DirectStart

Для загрузки файла достаточно написать код наподобие этого:

mySound1 = loader.loadSfx("SoundFile.wav")

Для воспроизведения файла достаточно вызвать метод play() у переменной со звуком,например:

mySound.play()

Для остановки воспроизведения служит метод stop().Метод status() возвращает 1,если звук сейчас проигрывается или 2,если он сейчас не проигрывается.Можно указать громкость воспроизведения звука от 0 до 1 дробным числом при помощи метода setVolume(),например:

mySound.setVolume(0.5)

Также можно при помощи метода setBalance() установить баланс звука между двумя динамиками,баланс может иметь дробное значение от -1.0 до 1.0. Например баланс полностью на левую колонку это -1.0.Пример использования этого метода:

mySound.setBalance(-0.5)

ВНИМАНИЕ:
Если вы запускаете Panda3D из консоли, то вам нужно после каждого проигрывания звука вызывать команду update():

base.sfxManagerList[n].update()

,где n - этой порядковый номер загруженного звука,начиная с нуля.

Для циклического воспроизведения звука(например для фоновой музыки в меню) необходимо вызвать перед воспроизведением метод setLoop(), в качестве параметра которого нужно указать True, если хотите циклически воспроизводить или False,если хотите прервать циклическое воспроизведение. Если вы хотите воспроизвести звук циклически несколько раз подряд,то вызывайте метод setLoopCount(n),где n это целое число больше 0,если указываете 0,то звук будет просто бесконечно циклически воспроизводиться.Метод length() возвращает длину звукового файла в секундах,пример:
mySound.length()
Метод getTime() возвращает текущую позицию "воспроизводящей головки" в секундах. Метод setTime(n) устанавливает "воспроизводящую головку" на n-ю секунду.
Можно установить скорость воспроизведения методом setPlayRate(n), где n - любое дробное число.Пример:
mySound.setPlayRate(n)
Соответственно можно узнать скорость воспроизведения методом getPlayRate(),пример:

mySound.getPlayRate()

Если указать n отрицательным, то звук будет проигрываться назад.
В дальнейшем я планирую написать статью про использование 3D звука в Panda3D.

Источник: http://panda3d.org/wiki/index.php/Manipulating_Sounds

Категория: Учебник: теория | Добавил: dpsstudio (31.01.2009) | Автор: Дмитрий Панченко E
Просмотров: 4045 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Онлайн всего: 1
Гостей: 1
Пользователей: 0