2014-01-13 5 views
0

NSArray의 모든 노래를 재생한다고 가정하고 하나만 재생하고 중지합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 배열에는 다른 .mp3 형식의 노래에 대한 전체 링크가 포함되어 있습니다. 대신 항목 대신 AVQueuePlayer를 사용 MPMoviePlayerController이 목록을 재생 얻으려고 노력의NSArray를 반복 함

NSArray *array = [myString componentsSeparatedByString:@"\n"]; 

int nextTag = 1; 
for (soundPath in array) { 
    NSURL *url = [NSURL URLWithString:soundPath]; 
    asset = [AVURLAsset URLAssetWithURL:url options:nil]; 

    yourMediaPlayer = [[MPMoviePlayerController alloc] initWithContentURL:url]; 
    yourMediaPlayer.controlStyle = MPMovieControlStyleNone; 
    yourMediaPlayer.currentPlaybackTime = 0; 
    yourMediaPlayer.shouldAutoplay = FALSE; 
    [yourMediaPlayer play]; 
    nextTag++; 
} 
+0

1. 인덱스를 추적 할 필요가 없습니다 빠른 열거를 사용하고 있기 때문에, 이것이'nextTag'가하는 것이라고 가정합니다. 2. 각 반복마다 새로운 'MPMoviePlayerController'를 만들고 노래 재생이 완료되었는지 여부에 관계없이 새 노래를로드하고 있습니다. – jcm

+0

@jcm 그렇다면 루프에서 MPMoviePlayerController를 제거하고 바깥에 놓아야한다는 말입니까? 그렇게하면 음악은 한 번만 재생됩니다. –

+0

또한 다음 곡을로드하기 전에 노래가 끝날 때까지 기다리지 않아도됩니다. – jcm

답변

2

. 편리한 advanceToNextItem 메소드가 있습니다.

initWithItems 또는 queuePlayerWithItems으로 항목 (클래스 AVPlayerItem)이 이미로드 된 플레이어를 만들 수 있습니다. 그런 다음 play (AVPlayer에서 상속)을 호출하면 항목을 차례로 재생해야합니다.

참조 :

AVQueuePlayer docs

AVPlayer docs

AV Foundation Programming Guide

AVPlayerItem docs

+0

'advanceToNextItem'에서 루프를 반복해야합니까? –

+0

수정 된 답변을 확인하십시오. – jcm