我在我的方法中设置了一个AVQueuePlayer
命名播放器。viewDidLoad
我也有一个UIbutton
播放该序列的方法。
这是我的观点确实加载方法
AVPlayerItem *firstSound = [[AVPlayerItem alloc] initWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"first" ofType:@"mp3"]]];
AVPlayerItem *secondSound = [[AVPlayerItem alloc] initWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"second" ofType:@"mp3"]]];
AVPlayerItem *thirdSound = [[AVPlayerItem alloc] initWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"third" ofType:@"mp3"]]];
player = [AVQueuePlayer queuePlayerWithItems:[NSArray arrayWithObjects:firstSound, secondSound, thirdSound, nil]];
这是我的按钮方法
-(IBAction)sequencePlay:(id)sender {[player play];}
当视图首次加载时,按下按钮只会产生一次声音序列。当我再次单击该按钮时,没有任何反应。但是,如果我导航到另一个视图控制器并返回到该视图控制器,它将在我第一次再次按下按钮时起作用,但和以前一样,它仅适用于第一次单击。
更新:在按钮而不是 viewDidLoad 方法中进行设置是根据第一个答案解决我的问题的关键。
我的 mp3 文件很小,每个文件只有一个单词。我有一个包含 3 列的 UIPickerView 设置,根据选择的行,当按下按钮时,它将按顺序播放这些特定的单词。关于我如何做到这一点有什么好的建议吗?
我目前正在尝试执行此操作,但出现错误
-(IBAction)sequencePlay:(id)sender
{
NSString *sayFirst = _firstRowWord.description;
AVPlayerItem *firstSound = [[AVPlayerItem alloc] initWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:sayFirst.description ofType:@"mp3"]]];
我收到以下错误 * 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“* -[NSURL initFileURLWithPath:]: nil string parameter”
firstRowWord 的描述与我要播放的 mp3 文件的名称完全相同