iPhone上如何同时播放多个AVAudioPlayer,要求不能产生音频的覆盖问题

下面例子可以解决音频相覆盖的问题,

主要是使用NSOperationQueue,

- (void)viewDidLoad 

{

    [super viewDidLoad];

 

NSData *sound1 = [NSData dataWithContentsOfFile:[[[NSBundle mainBundlebundlePathstringByAppendingPathComponent:@"01.mp3"]];

NSData *sound2 = [NSData dataWithContentsOfFile:[[[NSBundle mainBundlebundlePathstringByAppendingPathComponent:@"07.mp3"]];

 

NSOperationQueue *queue = [[NSOperationQueue allocinit];

NSError *error = nil;

 

AVAudioPlayer *player1 = [[AVAudioPlayer allocinitWithData:sound1 error:&error];

AVAudioPlayer *player2 = [[AVAudioPlayer allocinitWithData:sound2 error:&error];

 

NSInvocationOperation *op1 = [[[NSInvocationOperation allocinitWithTarget:self selector:@selector(playSounds:) object:player1] autorelease];

 

NSInvocationOperation *op2 = [[[NSInvocationOperation allocinitWithTarget:self selector:@selector(playSounds:) object:player2] autorelease];

 

[queue addOperation:op1];

[queue addOperation:op2];

 

}

- (void)playSounds:(id)data

{

    AVAudioPlayer *player = (AVAudioPlayer *)data;

 

    [player prepareToPlay];

    [player play];

}

你可能感兴趣的:(object,iPhone)