AVAudioPlayer fade volume out

前端 未结 13 2077
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-12-12 12:07

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

13条回答
  •  鱼传尺愫
    2020-12-12 12:30

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

提交回复
热议问题