adrigm
4/9/2013 - 1:27 PM

sfml_audio.cpp

#include <SFML/Graphics.hpp>
#include <SFML/Audio.hpp>

int main()
{
    // Crea una ventana de 640x480x32 con el título SFML window
	sf::RenderWindow window(sf::VideoMode(640, 480, 32), "SFML window");

	// Activa la sincronización vertical (60 fps)
	window.setVerticalSyncEnabled(true);

	// Creamos un SoundBuffer para almacenar un sonio
	sf::SoundBuffer buffer;
	// Cargamos un archivo en el buffer
	if (!buffer.loadFromFile("data/sonido.ogg"))
	{
		return EXIT_FAILURE;
	}

	// Creamos un sonido
	sf::Sound sonido;
	// Le asignamos el buffer cargado
	sonido.setBuffer(buffer);
	// establecemos el volumen a 80
	sonido.setVolume(80);

	// Creamos un objeto música
	sf::Music musica;
	// Abrimos el fichero de música que queremos reproducir
	musica.openFromFile("data/musica.ogg");
	// Activamos el loop cuando acabe empezará de nuevo
	musica.setLoop(true);
	// Empezamos a reproducir nuesta música
	musica.play();

	// Game Loop mientras la ventana esté abierta
	while (window.isOpen())
	{

		// Creamos un objeto evento
		sf::Event event;
		// Procesamos la pila de eventos
		while (window.pollEvent(event))
		{
			// Si el evento es de tipo Closed cerramos la ventana
			if (event.type == sf::Event::Closed)
				window.close();
			// Si pulsamos la tecla espacio que se reproduzca el sonido
			else if (event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Space)
			{
				sonido.play();
			}
		}

		// Limpiamos la pantalla
		window.clear(sf::Color(180, 200, 255));
 
		// Actualizamos la ventana
		window.display();
	}
 
	return 0;
}