Официальная документация класса sf::Sound (ENG)
Урок 29. Звуки и Музыка
Поподробнее о классе sf::Sound
1. Рассмотрим процесс создания двух одинаковых звуков.
Обычное объявление звука происходит следующим образом
1 2 3 4 |
sf::SoundBuffer buffer; buffer.loadFromFile("music/fiename.format"); sf::Sound sound; sound.setBuffer(buffer); |
А что если нам надо загрузить два одинаковых звука, и параллельно использовать их?
Сделаем вот так:
1 2 3 4 5 6 7 8 9 |
sf::SoundBuffer buffer1; buffer1.loadFromFile("music/filename.format"); sf::Sound sound1; sound1.setBuffer(buffer1); sf::SoundBuffer buffer2; buffer2.loadFromFile("music/filename.format"); sf::Sound sound2; sound2.setBuffer(buffer2); |
Велосипед? Ещё какой!
Как можно улучшить?
Попробуем вот так:
1 2 3 4 5 6 |
sf::SoundBuffer buffer; buffer.loadFromFile("music/filename.format"); sf::Sound sound1; sf::Sound sound2; sound1.setBuffer(buffer); sound2.setBuffer(buffer); |
Велосипед? Ещё какой, но получше первого вот этим:
+ Вместо 2 buffer используется 1
+ Вместо 2 звуков загружаем 1
+ Сокращение строк кода на 2
1 2 3 4 |
sf::SoundBuffer buffer; buffer.loadFromFile("music/filename.format"); sf::Sound sound1; sound1.setBuffer(buffer); sf::Sound sound2; sound2.setBuffer(buffer); |
Велосипед? Ещё какой, но получше второго вот этим:
+ Сокращение строк кода на 2
+ Наглядность кода
– жертва стилем
2. Повторение звука (setLoop)
1 |
sound.setLoop(true); |
setLoop(true); – включение повтора
setLoop(false); – отключение повтора
getLoop(); – возвращает состояние повтора
3. Громкость звука (setVolume)
1 |
sound.setVolume(float); |
setVolume(float) – устанавливает громкость звука (0 – нет звука, 100 – полная громкость)
setVolume(-100); – Громкость 0%
setVolume(0); – Громкость 0%
setVolume(50); – Громкость 50%
setVolume(100); – Громкость 100%
setVolume(200); – Громкость 100%
ВНИМАНИЕ! Звуковой интервал выходит за пределы 0 и 100.
1 |
cout << sound.getVolume() << endl; |
Это можно проверить функцией getVolume().
getVolume(); – Возвращает текущую громкость, если она не ниже 0
4. Управление звуком
play(); – возобновить запись
pause(); – приостановить запись
stop(); – приостановить запись и вернуться в начало
…