0

iPhone初心者です。私は2つのオーディオファイルを取りましたが、最初に再生する方法は最初に終了し、次に再生する方法は1つだけです...

これは私のコードです....

-(IBAction)onclicksound
{
   path=[[NSBundle mainBundle]pathForResource:@"Animalfile" ofType:@"plist"];
        dict=[[NSDictionary alloc]initWithContentsOfFile:path];
        NSError *error;
        animalaudio=[dict valueForKey:@"Animalsound"];

        NSLog(@"animalaudio:%@",animalaudio);
        NSLog(@"currentsound=%d",currentsound);
        selectanimalaudio=[animalaudio objectAtIndex:currentsound];

        NSString *soundpath=[[NSBundle mainBundle]pathForResource:selectanimalaudio ofType:@""];
        NSLog(@"selectaudio:%@",selectanimalaudio);
        AVAudioPlayer *audioplayer=[[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL fileURLWithPath:soundpath]  error:&error];
            if (error)
            {
                NSLog(@"Error in audioPlayer: %@", 
                  [error localizedDescription]);
            } 
            else 
            {

                self.audiosound=audioplayer;
                [audioplayer release];
                //audiosound.numberOfLoops=currentsound;
                //[self.audiosound setDelegate:self];
                [audiosound play];
                NSLog(@"audioplayer:%@",audiosound);
            }


        NSError *err;
        animalsecaudio=[dict valueForKey:@"Birdsound"];
        NSLog(@"animalaudio:%@",animalsecaudio);
       // NSLog(@"currentsound=%d",currentsound);
        selectanimalsecaudio=[animalsecaudio objectAtIndex:currentsound];
          NSLog(@"selectanimalsecaudio:%@",selectanimalsecaudio);
         NSString *soundsecpath=[[NSBundle mainBundle]pathForResource:selectanimalsecaudio ofType:@""];
        AVAudioPlayer *audioplayerr=[[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL fileURLWithPath:soundsecpath]  error:&err];
        if (err)
        {
            NSLog(@"Error in audioPlayer: %@", 
                  [err localizedDescription]);
        } 
        else 
        {

            self.animalsecsound=audioplayerr;
            [audioplayerr release];
            //audiosound.numberOfLoops=currentsound;
            [animalsecsound play];
            [animalsecsound prepareToPlay];
           // [self.animalsecsound setDelegate:self];
            NSLog(@"audioplayer:%@",animalsecsound);
        }
}

ですから、2 番目の avaudioplayer の再生方法は、1 つの avaudioplayer が終了した後に、提案とソース コードを提供してください。

4

1 に答える 1

2

AVAudioPlayerのデリゲートメソッドを呼び出すことができますaudioPlayerDidFinishPlaying:

例えば:

- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)sender successfully:(BOOL)success
{
    if (success) 
        {
            //code to play next sound
        }
}
于 2012-07-19T10:42:03.180 に答える