2016-06-07 17 views
5

Voglio riprodurre la musica di sottofondo continuamente in un ciclo fino alla fine del gioco.riprodurre musica di sottofondo in un loop Qt

nel file di intestazione:

QMediaPlayer * music = new QMediaPlayer(); 

nel file cpp:

startGame(){ 
    music->setMedia(QUrl("qrc:/sounds/backgroundmusic.mp3")); 
    music->play(); } 

    stopGame(){ 
    music->stop(); } 

In questo momento la mia musica gioca attraverso fino alla fine, ma non si riavvia. Come posso farlo ripetere di nuovo? C'è un membro QMediaPlayer che posso usare, o dovrei eseguirlo in un ciclo while, o cosa?

+0

Utilizzare QMediaPlaylist per quello come indicato nella risposta di p4plus2. Oppure prova a lavorare con il segnale 'mediaStatusChanged'. È possibile collegarlo a uno slot che controlla lo stato 'QMediaPlayer :: EndOfMedia' e quindi avvia nuovamente la riproduzione. ... Ma preferisci QMediaPlaylist. :) – Bugfinger

risposta

10

Suoni come quello che vuoi è QMediaPlaylist. QMediaPlaylist consente di controllare la modalità di riproduzione e in questo caso si utilizzerà Loop. Questo approccio ha anche altri vantaggi, come ad esempio CurrentItemInLoop. CurrentItemInLoop riprodurrà la voce della playlist corrente in un ciclo, il che significa che se aggiungi altre canzoni in futuro, puoi selezionare una canzone e quindi ripetere solo quella traccia. Quindi, hai bisogno di una sola playlist per la maggior parte delle esigenze. Di seguito è riportato un codice di esempio, al momento non ho un mezzo per testarlo (nessuna estensione multimediale Qt installata su questa macchina). Dovrebbe dimostrare il punto ragionevolmente bene però.

QMediaPlaylist *playlist = new QMediaPlaylist(); 
playlist->addMedia(QUrl("qrc:/sounds/backgroundmusic.mp3")); 
playlist->setPlaybackMode(QMediaPlaylist::Loop); 

QMediaPlayer *music = new QMediaPlayer(); 
music->setPlaylist(playlist); 
music->play(); 
Problemi correlati