gpt4 book ai didi

iphone - 如何在同一个 ViewController 中添加多个 AVAudioPlayer

转载 作者:行者123 更新时间:2023-11-29 10:56:46 28 4
gpt4 key购买 nike

在我的应用程序中,我显示了 5 个 UIView,触摸任何 View 都会播放声音。那么如何在同一个 ViewController 中添加多个 AVAudioPlayer

对于单个 View ,我添加了这段代码来实现 AVAudioPlayer

NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"Sound" ofType:@"MP3"]];

NSError *error;
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
if (error)
{
NSLog(@"Error in audioPlayer: %@", [error localizedDescription]);
} else {
audioPlayer.delegate = self;

//theAudio.numberOfLoops = -1;
[audioPlayer prepareToPlay];
}

那么我应该只创建 5 个 AVAudioPlayer 实例并添加到每个 View 还是以任何其他方式为每个 View 重用此代码?

最佳答案

您可以像这样使用相同的代码创建多个 AudioPlayer 实例

在.h文件中

#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h>

@interface MultipleChoiceViewController : UIViewController<AVAudioPlayerDelegate>
{
AVAudioPlayer *dingAudioPlayer;
AVAudioPlayer *buzzAudioPlayer;
}
-(IBAction) playDingAudio:(id) sender;
-(IBAction) playBuzzAudio:(id) sender;

在你的.m文件中

- (void)viewDidLoad
{
dingAudioPlayer = [self loadAudio:@"ding Audio" audioType:@"mp3"];
buzzAudioPlayer = [self loadAudio:@"buzz Audio" audioType:@"mp3"];
[buzzAudioPlayer play];
}

- (AVAudioPlayer *)loadAudio:(NSString *)filename audioType:(NSString *)audioType{
NSURL * url = [[NSBundle mainBundle] URLForResource:filename withExtension:audioType];
NSError * error;
AVAudioPlayer * player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
if (!player) {
NSLog(@"Error loading %@: %@", url, error.localizedDescription);
} else {
player.delegate = self;
[player prepareToPlay];
}
return player;
}


#pragma mark - AvAudio Player delegate methods

-(void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
if (player != dingAudioPlayer && player != buzzAudioPlayer) {
player = nil;
}
NSLog(@"finished");
}
-(void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer *)player error:(NSError *)error
{
NSLog(@"AVAudioPlayer Error : %@",error);
}
-(void)audioPlayerBeginInterruption:(AVAudioPlayer *)player
{
}
-(void)audioPlayerEndInterruption:(AVAudioPlayer *)player
{
}

-(IBAction) playDingAudio:(id) sender{
[dingAudioPlayer play];
}
-(IBAction) playBuzzAudio:(id) sender{
[buzzAudioPlayer play];
}

关于iphone - 如何在同一个 ViewController 中添加多个 AVAudioPlayer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17941157/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com