Ich versuche, ein Schulprojekt mit SDL 1.2 zu beenden, aber ich habe einen Haken gefunden, den ich nicht verstehen kann.Kann ich Mix_OpenAudio und SDL_OpenAudio im selben Spiel verwenden?
Das Spiel hat mehrere Spielstatusmodule mit jeweils einer Funktion int Run (SDL_Surface * screen);
In jedem Modul, Run() Audio initialisiert, läuft durch die Schleife schließt dann Audio vor der Rückkehr.
alle Module verwenden Mix_OpenAudio() und Mix_CloseAudio()/init deinit den Ton und fein zusammenarbeiten.
Die einzige Ausnahme ist das Film-Movie-Modul, wo ich SDL_FFMpeg verwendet habe, um einen Film zu zeigen. Dieses Modul zwingt mich, stattdessen SDL_OpenAudio() zu verwenden.
SDL_OpenAudio nicht das erste Mal mit dem Fehler „Audio-Gerät ist bereits geöffnet“, aber dann funktioniert das zweite Mal.
Nachdem ich den Film Modul ausgeführt haben, alle der Ton in den anderen Modulen nicht mehr funktioniert, obwohl alle ihre Funktionen 0 für Erfolg zurück.
Wer hat eine Idee, was los ist?
Code aus den relevanten Modulen anzeigen? – freedrull
ugh ... danke trotzdem..aber was das Problem endlich gelöst hat, macht mich wütend. Ich wurde schließlich satt und steckte nur 5 weitere SDL_CloseAudio() Anrufe am Ende jedes Moduls ... und wüsste es nicht, das Problem ging weg! Also entfernte ich die zusätzlichen Anrufe nacheinander bis ...... Ich hatte die gleiche Nummer wie zu Beginn, außer dass es immer noch funktionierte ... – bitwise
Der obige Kommentar klingt, als ob dein Compiler nicht bemerkt hätte, dass es Änderungen gab . Das kann Passieren. Eine Sache, die Sie tun sollten, wenn Sie darüber verwirrt sind, warum die Dinge nicht funktionieren, ist, den Compiler zu zwingen, das ganze Projekt neu zu kompilieren. Löschen Sie alle OBJ-Dateien von Hand oder verwenden Sie den Befehl "clear project" in Ihrer IDE. Nochmal laufen und sehen, ob es jetzt funktioniert. Wenn es immer noch nicht funktioniert, frage SO. ;-) – AudioDroid