2013-12-20 54 views
0

我創建了一個聲音,這是我玩這樣的:AVAudioPlayer水平下降緩慢

NSURL *musicFile = [[NSBundle mainBundle] URLForResource:@"My music" 
              withExtension:@"mp3"]; 
self.backgroundMusic = [[AVAudioPlayer alloc] initWithContentsOfURL:musicFile 
                   error:nil]; 
self.backgroundMusic.numberOfLoops = -1; 
[self.backgroundMusic play]; 

但是,當我改變視角,我想停止音樂。但是,慢慢地,順利地,不是馬上。正如當你將你的應用程序放在後臺時,你的音樂不會立即停止,而是大約0.5秒。

可能嗎?

謝謝!

回答

2

是的,這是可能的,並且有幾種實現這種「淡出」效果的方法。

我做到了,這樣在早期的一個項目,它的工作對我很好

-(void)fadeOut { 

    if (self.backgroundMusic.volume > 0.05) { 

     self.backgroundMusic.volume = self.backgroundMusic.volume - 0.05; 

     // Volume will be zero after ~0.5 seconds 
     [self performSelector:@selector(fadeOut) withObject:nil afterDelay:1.0/40.0]; 

    } else { 
     [self.backgroundMusic stop]; 
    } 
} 
+0

真是很好的例子!謝謝 ! – user2947788

0

創建一個計時器並減少AVAudioPlayer的音量。

[NSTimer scheduledTimerWithTimeInterval: 1.0 
         target: self 
         selector:@selector(timerTriggered:) 
         userInfo: nil repeats:YES]; 

-(void)timerTriggered:(NSTimer *)timer 
{ 
    [appSoundPlayer setVolume: appSoundPlayer.volume - 0.1]; 

    if(appSoundPlayer.volume == 0.0) 
    { 
    [timer inValidate]; 

    timer = nil; 
    } 
}