AVQueuePlayer仅从阵列播放一次音频

时间:2016-03-09 06:41:27

标签: ios objective-c arrays audio avqueueplayer

我有如下QueuePlayer数组,

Print Queue Player array : (
    "<AVQueuePlayer: 0x7fed625a51c0>",
    "<AVQueuePlayer: 0x7fed624baa00>",
    "<AVQueuePlayer: 0x7fed624c43c0>"
)

单击按钮,我正在播放上面的数组音频,

-(IBAction)click_Play:(UIButton *)sender {

    [(AVQueuePlayer *)[arrQueuePlayer objectAtIndex:sender.tag] setVolume:1.0];
    [(AVQueuePlayer *)[arrQueuePlayer objectAtIndex:sender.tag] play];
}

生成QueuePlayer数组的原因是,我的播放按钮位于UITableView中。单击按钮时从阵列播放音频仅适用于第一次。如果我再次单击播放按钮。这不是播放声音。不知道出了什么问题。我通过调试代码检查了它,我的数组正在变得无效。那么为什么它不会再次按下按钮?

请帮帮我。提前谢谢!

1 个答案:

答案 0 :(得分:1)

当您从阵列中播放队列播放器时,可能会在播放一次后变为零。我不确定这是否是您的实际问题。因为我不知道你是如何创建这些队列播放器对象并将其添加到数组中的。但我认为队员球员对象在比赛结束后会成为问题。

如果是这样,那么你必须重新播放队列播放器。由于AVQueuePlayer没有任何委托方法,例如audioPlayerDidFinishPlaying:(这是AVAudioPlayer的委托方法)。因此,对于AVQueuePlayer,您需要为playerItemDidReachEnd:添加观察者,如下所示,

[[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(playerItemDidReachEnd:)
                                                 name:AVPlayerItemDidPlayToEndTimeNotification
                                               object:item];

在此观察者方法中,重新创建队列播放器并将其替换为阵列。希望它会帮助你!干杯..