0

私はiphoneを初めて使用します。ここでオーディオプレーヤーに取り組んでいます。プロジェクトでここにある問題に直面しているため、途中で打たれました。リソースフォルダーに2つのディレクトリがあります。各ディレクトリには6mp3オーディオファイルがあります。問題は、ユーザーがリソース フォルダーの最初のディレクトリにある 3 番目の mp3 曲へのパスを指定したときです。4 番目、5 番目、6 番目の mp3files などのすべての曲を連続して再生する必要があります。これもリソース フォルダーのそのディレクトリに配置されます。このため

    NSString *chapterString =@"3";
    NSString *string = [[NSBundle mainBundle]pathForResource:chapterString ofType:@"mp3" inDirectory:@"raj"];
    NSLog(@"string is %@",string);
    url = [NSURL fileURLWithPath:string isDirectory:YES];
    NSError *error;
    audioPlayer = [[AVAudioPlayer alloc]initWithContentsOfURL:url error:&error];

体がこれを知っているなら、私を助けてください..

4

2 に答える 2

0
  1. すべての曲を配列に入れる
  2. グローバル変数を初期化します x と仮定します
  3. 次の AVAudioPlayer デリゲートを記述します。

    - (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag{
        if (x<([_downloadedSongArray count]-1)) 
        {
            x=x+1;
            [self loadSong];
        }
    }
    - (void)loadSong 
    {
     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        _audioDocumentsDirectory = [paths objectAtIndex:0];
        _audioDocumentsDirectory = [_audioDocumentsDirectory stringByAppendingPathComponent:@"Songs"];
        NSString *selectedSong = [_downloadedSongArray objectAtIndex:x];
        _sharerDownloadedString=selectedSong;
        selectedSong = [selectedSong stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
        _audioDocumentsDirectory = [_audioDocumentsDirectory stringByAppendingPathComponent:selectedSong];
    
        url = [NSURL fileURLWithPath:_audioDocumentsDirectory];
        [_audio stop];
        _audio = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
        [_audio prepareToPlay];
        [_audio play];
        [Utility setPlaying:YES];
        [_audio setDelegate:self];
    }
    

_downloadedSongArray は、すべての曲がある配列です。また、loadSong は、インデックスに基づいて配列から次/前の曲を読み込み、AVAudioPlayer に割り当てるメソッドです。

于 2012-05-23T08:09:59.850 に答える