2016-10-31 3 views
1

Ich programmiere ein Gmae in C++ .net, es ist wie der Raum Auswirkungen. Ich starte das Spielformular und auf seinem Load Event erstelle ich einen Thread um eine Musik im Hintergrund der Anwendung abzuspielen.Mein Thread schließt sich, während das Programm läuft

Das Problem ist, dass, wenn ich die Leertaste drücken, um es zu schießen, es spielt auch einen Ton, und es stoppt die Hauptmusik.

Ich hatte bereits dieses Problem, aber mir wurde gesagt, dass Threads das Problem beheben sollten.

Ich habe den Thread erstellt und mein Problem steht. Etwas Hilfe wäre willkommen.

private: System::Void GameForm_Load(System::Object^ sender, System::EventArgs^ e) 
{ 

    Thread^ newThread = gcnew Thread(gcnew ThreadStart(PlayMusic)); 
    newThread->Name = "MusicaImperio"; 
    newThread->IsBackground = true; 
    if(newThread->IsBackground == true) 
    newThread->Start(); 
    //Sleep(3000); 

} 

Dies ist das Load-Ereignis, und dies ist die Methode Playmusic:

static void PlayMusic() 
{ 
    PlaySound(TEXT("../Musicas/Game.wav"), NULL, SND_ASYNC | SND_LOOP); 
} 
+3

'PlaySound' ist nicht dafür geeignet; Sie können damit immer nur einen Ton gleichzeitig spielen. – molbdnilo

+0

können Sie mir eine andere Funktion für diese Art von Dingen sagen? – kingwarrior05

+0

Ich denke, Sie könnten [DirectSound] (https://msdn.microsoft.com/en-us/library/ee416960 (v = vs.85) .aspx) verwenden, und möglicherweise gibt es andere Windows-APIs. Viele Leute benutzen Bibliotheken. (Nein, ich weiß nicht, welches für Sie geeignet wäre.) – molbdnilo

Antwort

0

, wenn Sie nicht versuchen, es auf dem Hintergrund laufen zu lassen.

Funktioniert es dann oder noch nichts?

vielleicht können Sie sehen, was passiert

Verwandte Themen