1. Описание сигналов модуля soundManager для работы со звуком
Для работы со звуком в RRS используются элементарные подпрограммы которые объявлены в модуле "soundManager" и являются слотами:
Код: Выделить всё
slots:
// Воспроизвести звук
void soundPlay(QString name);
// Стоп воспроизведения звука
void soundStop(QString name);
// Задать громкость
void soundSetVolume(QString name, int volume);
// Задать тональность
void soundSetPitch(QString name, float pitch);
Код: Выделить всё
signals:
// Воспроизвести звук
void soundPlay(QString name);
// Стоп воспроизведения звука
void soundStop(QString name);
// Задать громкость
void soundSetVolume(QString name, int volume);
// Задать тональность
void soundSetPitch(QString name, float pitch);
- name - имя звукового сэмпла из файла "sounds.xml"
- volume - значение громкости (0 - 100) типа данных Int32
- pitch - значение тональности (по умолчанию 1.0) тип данных float
Например пускай класс MyClass имеет свой экземпляр class1 наследует класс ParentClass с сигналами работы со звуком. Тогда в дочернем классе Class1 мы должны вызвать один раз процедуру инициализации и соединить сигналы класса родителя с экземпляром дочернего класса.
Код: Выделить всё
void MyClass::Init()
{
connect(&class1, &MyClass::soundPlay, this, &ParentClass::soundPlay);
connect(&class1, &MyClass::soundStop, this, &ParentClass::soundStop);
connect(&class1, &MyClass::soundSetVolume, this, &ParentClass::soundSetVolume);
connect(&class1, &MyClass::soundSetPitch, this, &ParentClass::soundSetPitch);
}
Далее мы можем пользоваться данными подпрограммами вызывая их в любой части кода:
Код: Выделить всё
emit soundPlay(soundName);
emit soundStop(soundName);
emit soundSetVolume(soundName, static_cast<int>(volume));
emit soundSetPitch(soundName, static_cast<float>(pitch));
- soundPlay - воспроизведёт звук с именем soundName, подпрограмма должна вызываться однократно, иначе при многократном вызове звук будет каждый раз при вызове воспроизводится снова.
- soundStop - остановит звук с именем soundName, может вызыватся многократно, однако данная подпрограмма заточена также для проигрывания звука с метками (loop-stop), при использовании меток должна вызыватся однократно, иначе будет ситуация как в первом случае
- soundSetVolume - задает громкость звуку с именем soundName в интервале от 0 до 100. Если звук на момент вызова не проигрывается, то произойдёт автоматический, однократный вызов soundPlay(soundName) для воспроизведения звука.
- soundSetPitch - задает тональность звуку с именем soundName, принимает значение типа float. Если звук на момент вызова не проигрывается, то произойдёт автоматический, однократный вызов soundPlay(soundName) для воспроизведения звука.