2016-06-07 2 views
5

게임이 끝날 때까지 루프에서 계속해서 배경 음악을 재생하고 싶습니다. 헤더 파일에루프에서 배경 음악 재생 Qt

다음 CPP 파일에

QMediaPlayer * music = new QMediaPlayer(); 

:

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

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

이 지금 내 음악이 끝까지 통해 재생하지만 다시 시작하지 않습니다. 어떻게 다시 루프백 할 수 있습니까? 사용할 수있는 QMediaPlayer 멤버가 있습니까? 아니면 while 루프에서 실행해야합니까?

+0

p4plus2의 대답 에서처럼 QMediaPlaylist를 사용하십시오. 또는'mediaStatusChanged' 시그널을 가지고 작업 해보십시오. 'QMediaPlayer :: EndOfMedia' 상태를 확인한 후 다시 재생을 시작하는 슬롯에 연결할 수 있습니다. ... 그러나 QMediaPlaylist를 선호합니다. :) – Bugfinger

답변

10

원하는 소리는 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();