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

    技术2022-05-20  37

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

    主要是使用NSOperationQueue,

    - (void)viewDidLoad 

    {

        [super viewDidLoad];

     

    NSData *sound1 = [NSData dataWithContentsOfFile:[[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"01.mp3"]];

    NSData *sound2 = [NSData dataWithContentsOfFile:[[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"07.mp3"]];

     

    NSOperationQueue *queue = [[NSOperationQueue alloc] init];

    NSError *error = nil;

     

    AVAudioPlayer *player1 = [[AVAudioPlayer alloc] initWithData:sound1 error:&error];

    AVAudioPlayer *player2 = [[AVAudioPlayer alloc] initWithData:sound2 error:&error];

     

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

     

    NSInvocationOperation *op2 = [[[NSInvocationOperation alloc] initWithTarget: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];

    }


    最新回复(0)