gpt4 book ai didi

ios - 从 plist(NSArray) 中挑选歌曲并使用 AVAudioPlayer 播放?

转载 作者:行者123 更新时间:2023-11-29 13:49:20 26 4
gpt4 key购买 nike

我是一名正在做编码练习的学生,我被难住了!

我的应用程序中有两个 AVAudioPlayer 实例 - 我可以使用直接路径将歌曲加载到每个播放器中,没问题。

我想做的是在每个播放器上播放一个数组中的多首歌曲。

这可能吗?如果可以,我该怎么做?

在我的 plist 中,我将键设置为“One.mp3”作为字符串,并将值设置为文件的路径...(在那部分是猜测)。

感谢您的任何见解。

- (void)viewDidLoad {
[super viewDidLoad];

//multiple song array

NSString *soundsPath = [[NSBundle mainBundle] pathForResource:@"soundslist"
ofType:@"plist"];

soundsList = [[NSArray alloc] initWithContentsOfFile:soundsPath];

NSString* filename = [soundsList objectAtIndex:0];
NSString *path = [[NSBundle mainBundle] pathForResource:filename
ofType:@"mp3"];

AVAudioPlayer * newAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path]
error:NULL];
self.audioPlayer = newAudio; // automatically retain audio and dealloc old file if new file is loaded

[newAudio release]; // release the audio safely

audioPlayer.delegate = self;
[audioPlayer prepareToPlay];
[audioPlayer setNumberOfLoops:0];
[audioPlayer play];
}

最佳答案

听起来您想尝试在一个播放器上播放多首歌曲。正如 AVAudioPlayer Overview 中所述,这是不可能的(第 4 个项目符号)。可以使用多个 AVAudioPlayer 播放多首歌曲。像这样:

NSMutableArray *audioPlayers = [NSMutableArray arrayWithCapacity:[soundsList count]];

for (NSString *soundPath in soundsList) {
NSError *error = nil;

AVAudioPlayer *audioPlayer = [AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:&error];
[audioPlayers addObject:audioPlayer];

audioPlayer.delegate = self;
[audioPlayer prepareToPlay];
[audioPlayer setNumberOfLoops:0];
[audioPlayer play];
}

我建议您对文件路径进行硬编码,而不是使用 plist 读取它。一旦你开始工作,你就可以尝试用 plist 读入它。这样的事情会起作用:

NSURL *soundURL = [[NSBundle mainBundle] URLForResource:@"One" withExtension:@"mp3"];
AVAudioPlayer *soundPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:soundURL error:&error]

这样,您就消除了一层间接和一个故障点。

关于ios - 从 plist(NSArray) 中挑选歌曲并使用 AVAudioPlayer 播放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5735380/

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