如何发挥多个声音?

我需要播放多个声音文件。 我有以下代码:

我的课

 #import <UIKit/UIKit.h> #import <AVFoundation/AVFoundation.h> #import <AudioToolbox/AudioToolbox.h> @interface ViewController : UIViewController { AVAudioPlayer *musicPlayer; } - (IBAction)music1:(id)sender; - (IBAction)music2:(id)sender; - (IBAction)music3:(id)sender; - (IBAction)music4:(id)sender; - (IBAction)music5:(id)sender; @end 

我的.m文件

 #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } - (IBAction)music1:(id)sender { if(musicPlayer.isPlaying) { [musicPlayer pause]; return; } if(musicPlayer == nil) { NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"music1" ofType:@"wav" ]]; musicPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil]; } [musicPlayer play]; } - (IBAction) music2:(id)sender { if(musicPlayer.isPlaying) { [musicPlayer pause]; return; } if(musicPlayer == nil) { NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"music2" ofType:@"wav" ]]; musicPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil]; } [musicPlayer play]; } - (IBAction) music3:(id)sender { if(musicPlayer.isPlaying) { [musicPlayer pause]; return; } if(musicPlayer == nil) { NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"music3" ofType:@"wav" ]]; musicPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil]; } [musicPlayer play]; } - (IBAction) music4:(id)sender { if(musicPlayer.isPlaying) { [musicPlayer pause]; return; } if(musicPlayer == nil) { NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"music4" ofType:@"wav" ]]; musicPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil]; } [musicPlayer play]; } - (IBAction) music5:(id)sender { if(musicPlayer.isPlaying) { [musicPlayer pause]; return; } if(musicPlayer == nil) { NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"music5" ofType:@"wav" ]]; musicPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil]; } [musicPlayer play]; } @end 

但是这个代码不起作用:只播放一个音乐文件。 其他文件不是。

另外还有一个例子:
音乐1播放。 我按下Music2button – > Music1结束,Music2开始。
我如何编写代码?

非常感谢..

每个声音都需要AVAudioPlayer:

。H:

  #import <UIKit/UIKit.h> #import <AVFoundation/AVFoundation.h> #import <AudioToolbox/AudioToolbox.h> @interface ViewController : UIViewController { AVAudioPlayer *musicPlayer1; AVAudioPlayer *musicPlayer2; AVAudioPlayer *musicPlayer3; AVAudioPlayer *musicPlayer4; AVAudioPlayer *musicPlayer5; NSMutableArray playingMusicArray; } - (IBAction)music1:(id)sender; - (IBAction)music2:(id)sender; - (IBAction)music3:(id)sender; - (IBAction)music4:(id)sender; - (IBAction)music5:(id)sender; @end 

.M:

 #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; playingMusicArray = [[NSMutableArray alloc] init]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } - (void)stopPlayingMusic { for(AVAudioPlayer *audioPlayer in playingMusicArray) { [audioPlayer pause]; [playingMusicArray removeObject:audioPlayer]; } } - (IBAction)music1:(id)sender { [self stopPlayingMusic]; if(musicPlayer1 == nil) { NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"music1" ofType:@"wav" ]]; musicPlayer1 = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil]; } [playingMusicArray addObject:musicPlayer1]; [musicPlayer1 play]; } - (IBAction) music2:(id)sender { [self stopPlayingMusic]; if(musicPlayer2 == nil) { NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"music2" ofType:@"wav" ]]; musicPlayer2 = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil]; } [playingMusicArray addObject:musicPlayer2]; [musicPlayer2 play]; } - (IBAction) music3:(id)sender { [self stopPlayingMusic]; if(musicPlayer3 == nil) { NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"music3" ofType:@"wav" ]]; musicPlayer3 = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil]; } [playingMusicArray addObject:musicPlayer3]; [musicPlayer3 play]; } - (IBAction) music4:(id)sender { [self stopPlayingMusic]; if(musicPlayer4 == nil) { NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"music4" ofType:@"wav" ]]; musicPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil]; } [playingMusicArray addObject:musicPlayer4]; [musicPlayer4 play]; } - (IBAction) music5:(id)sender { [self stopPlayingMusic]; if(musicPlayer5 == nil) { NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"music5" ofType:@"wav" ]]; musicPlayer5 = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil]; } [playingMusicArray addObject:musicPlayer5]; [musicPlayer5 play]; } @end