Звуковая система 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 |