sf::Sound é um objeto leve que reproduz áudio carregado de um sf::SoundBuffer. Deve ser usado para sons pequenos.
sf::Music não carrega todo o áudio na memória, em vez disso, o reproduz direto do arquivo.
Você pode carregar um buffer de som de um arquivo com a sua função
loadFromFile.
#include <SFML/Audio.hpp>
int main()
{
sf::SoundBuffer buffer;
if (!buffer.loadFromFile("sound.wav"))
return -1;
return 0;
}
Como de costume, você também pode carregar um arquivo de áudio da memória (
loadFromMemory
) ou de um stream de entrada personalizado (loadFromStream
).
Os formatos de áudio suportados podem ser encontrados aqui.
Para reproduzir o som, devemos instanciar antes a sf::Sound.
sf::SoundBuffer buffer;
sf::Sound sound;
sound.setBuffer(buffer);
sound.play();
A melhor coisa é que você pode atribuir o mesmo buffer de som para vários sons, se assim quiser. Até mesmo pode reproduzi-los juntamente.
Sons e músicas são reproduzidos em uma thread separada. Ou seja, você pode fazer o que quiser depois de começar a tocar o som que ele não vai parar de tocar até que termine ou seja interrompido explicitamente.
Tocando uma música:
sf::Music music;
if (!music.openFromFile("music.ogg"))
return -1; // erro
music.play();
Exemplos:
// tocar playback
sound.play();
// ir para o 2º segundo
sound.setPlayingOffset(sf::seconds(2));
// pausar playback
sound.pause();
// retomar playback
sound.play();
// parar playback e rebobinar
sound.stop();
O valor do volume vai de 0 (mudo) a 100 (máximo e padrão).
sound.setVolume(50);
sound.setLoop(true);
Nenhum comentário:
Postar um comentário