|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
#pragma comment(lib, "sfml-system-d.lib")
#pragma comment(lib, "sfml-graphics-d.lib")
#pragma comment(lib, "sfml-audio-d.lib")
#pragma comment(lib, "sfml-window-d.lib")
#include <SFML/Graphics.hpp>
#include <SFML/Audio.hpp>
int main()
{
// Create the main rendering window
sf::RenderWindow App(sf::VideoMode(800, 600, 32), "SFML Graphics");
sf::Music Music;
if (!Music.OpenFromFile("test.wav"))
return EXIT_FAILURE;
Music.Play();
// Start game loop
while (App.IsOpened())
{
// Process events
sf::Event Event;
while (App.GetEvent(Event))
{
// Close window : exit
if (Event.Type == sf::Event::Closed)
App.Close();
}
// Clear the screen (fill it with black color)
App.Clear();
// Display window contents on screen
App.Display();
}
return EXIT_SUCCESS;
}
|
Dieser Code funktioniert bei mir wunderbar. Du musst nur darauf achten, dass du openAL32.dll in deinem Verzeichnis hast(oder
OpenAL installiert hast) und dass du die
libsnd-1.dll in deinem Projektverzeichnis hast. Achso und die Sound-Datei muss natürlich auch dort zu finden sein.
Dein einziger Fehler, warum dein Code nichts abspielte war, dass deine Anwendung nach einem Renderdurchgang beendet wurde. Das ist hier, wie du sehen solltest nicht so.
Außerdem solltest du dir angewöhnen deine Fragen präzise zu stellen. Ich habe immer noch keine Ahnung, was genau du weggelassen hast. Wenn du einfach nur return EXIT_FAILURE weglässt, dann wird die ganze If-Anweisung umgebaut und man erhält keinen Fehler, sondern das "Music.Play" ist plötzlich Teil der If-Anweisung. Wenn du dann einen Fehler bekommst, liegt das daran, dass die Sound-Datei definitiv nicht da ist, wo sie sein sollte.
EDIT: Wenn die Fehlermeldung ""Sound parameters has not been initialized" kommt, dann sollte aber darüber eine Fehlermeldung stehen, wie "failed to open rocketlaunch.wav". Ist zumindest bei mir so und dann steht egtl. weiß auf schwarz genau da, was das Problem ist. Aber wenn dieser Fehler kommt, dann ist das ohnehin völlig absurd.
|
C-/C++-Quelltext
|
1
2
|
if (!Music.OpenFromFile("t2st.wav"))
Music.Play();
|
Denn das macht mal definitiv gar keinen Sinn, ist aber das Resultat, wenn du das return einfach nur löschst.