iOS:如何在特定时间段内发生某种操作?

时间:2011-10-14 20:27:10

标签: ios avaudioplayer volume duration

在我的应用中,我正在使用AVAudioPlayer对象来保存mp3文件。我有几次希望在播放文件时降低文件的声级。

我理解我应该做的一些事情,但我不明白我是如何定义持续时间的,以及我如何命令某些事情只会在那段时间内发生。

我正在寻找类似的东西:

AVAudioPlayer * aud1 = [I have a method to get the file];
AVAudioPlayer * aud2 = [I have a method to get the file];
NSTimeInterval * aud1_ti = aud1.duration //I haven't tried this yet - is this the right way to get the mp3 play duration?
[aud1 play];
[aud2 play];
while (aud1_ti)
     aud2.volume = 0.5;
aud2.volume = 1.0

用语言说出来 - 我希望在aud1正在播放时,音量2将减少一半;一旦文件到达终点,aud2卷将恢复到完整级别。我无法从文档中了解如何做到这一点。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

您可能希望AVAudioPlayer的委托响应– audioPlayerDidFinishPlaying:successfully:并在此时重置音量,而不是基于持续时间。在非常非常基础的层面上,你会有这样的东西:

- (void)startPlaying {
     self.aud1.delegate = self;
     [self.aud1 play];

     self.aud2.volume = 0.5;
     [self.aud2 play];
}

- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL) {
     if (self.aud2) {
          self.aud2.volume = 1.0;
     }
}

请注意,上面的代码显然不完整,但应指向正确的方向。