воспроизведение фоновой музыки в цикле Qt
Я хочу играть фоновую музыку постоянно в цикле, пока игра не закончится.
в заголовочный файл:
QMediaPlayer * music = new QMediaPlayer();
в файле cpp:
startGame(){
music->setMedia(QUrl("qrc:/sounds/backgroundmusic.mp3"));
music->play(); }
stopGame(){
music->stop(); }
сейчас моя музыка играет до конца, но не перезагружается. Как я могу сделать так, чтобы это повторилось снова? Есть ли член QMediaPlayer, который я могу использовать, или я должен запустить его в цикле while, или что?
1 ответов
звучит так, как будто вы хотите это QMediaPlaylist
. QMediaPlaylist
позволяет управлять режимом воспроизведения, и в этом случае вы будете использовать Loop
. Такой подход имеет и другие преимущества, такие как CurrentItemInLoop
. CurrentItemInLoop
будет воспроизводить текущий элемент списка воспроизведения в цикле, что означает, что если вы добавите больше песен в будущем, вы можете выбрать песню, то цикл только этот трек. Таким образом, вам нужен только один плейлист для большинства потребностей. Ниже приведен пример кода, в настоящее время у меня нет средств для его тестирования (нет Qt мультимедийные расширения, установленные на этой машине). Должен продемонстрировать точку зрения достаточно хорошо.
QMediaPlaylist *playlist = new QMediaPlaylist();
playlist->addMedia(QUrl("qrc:/sounds/backgroundmusic.mp3"));
playlist->setPlaybackMode(QMediaPlaylist::Loop);
QMediaPlayer *music = new QMediaPlayer();
music->setPlaylist(playlist);
music->play();