iOS: как получить определенное действие в течение определенного времени? - PullRequest
0 голосов
/ 15 октября 2011

В моем приложении я использую объекты 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 громкость aud2 была уменьшена вдвое; и как только файл достигнет своего конца, том aud2 вернется к своему полному уровню. Я не мог понять из документации, как это сделать.

Кто-нибудь может помочь?

1 Ответ

0 голосов
/ 15 октября 2011

Вместо того, чтобы основывать это на продолжительности, вы, вероятно, хотите, чтобы делегат вашего AVAudioPlayer ответил на - audioPlayerDidFinishPlaying: успешно: и сбросил громкость в это время.На очень базовом уровне у вас будет что-то вроде этого:

- (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;
     }
}

Обратите внимание, приведенный выше код явно неполон, но должен указывать вам правильное направление.

...