我需要播放多个声音文件。我有以下代码:
我的.h
课程:
#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
但是这段代码不起作用:只播放一个音乐文件。其他文件不是。
另外,还有一个例子:
Music1正在播放。
我按下Music2按钮 - &gt; Music1结束,Music2开始。
我如何修改代码?
答案 0 :(得分:0)
每个声音都需要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