I have an AVAudioPlayer playing some audio (duh!)
The audio is initiated when the user presses a button. When they release it I want the audio to fade out.
I
This seems to me to be a descent use of an NSOperationQueue.
Hence here is my solution:
-(void) fadeIn
{
if (self.currentPlayer.volume >= 1.0f) return;
else {
self.currentPlayer.volume+=0.10;
__weak typeof (self) weakSelf = self;
[NSThread sleepForTimeInterval:0.2f];
[self.fadingQueue addOperationWithBlock:^{
NSLog(@"fading in %.2f", self.currentPlayer.volume);
[weakSelf fadeIn];
}];
}
}
-(void) fadeOut
{
if (self.currentPlayer.volume <= 0.0f) return;
else {
self.currentPlayer.volume -=0.1;
__weak typeof (self) weakSelf = self;
[NSThread sleepForTimeInterval:0.2f];
[self.fadingQueue addOperationWithBlock:^{
NSLog(@"fading out %.2f", self.currentPlayer.volume);
[weakSelf fadeOut];
}];
}
}