2012-05-12 57 views
1

我:MPMusicPlayerController音量淡入

MPMusicPlayerController *musicPlayer = [MPMusicPlayerController iPodMusicPlayer]; 

當使用的應用程序,我需要關閉音樂發出警報,當它消失了,我想,使其達到先前的音量。這裏的音樂音量是存儲褪色之前的音量水平的雙倍:

musicVolume = musicPlayer.volume; 
if (musicPlayer.playbackState == MPMusicPlaybackStatePlaying) 
    [self fadeMusicOut]; 

這使音樂淡出。

淡出它放回:

- (void) fadeMusicIn 
    { 
      [musicPlayer play]; 
      musicPlayer.volume += 0.05; 
      if (musicPlayer.volume < musicVolume) 
       [self performSelector: @selector(fadeMusicIn) 
          withObject: nil 
          afterDelay: 0.1 ]; 
      else 
      { 

      } 
    } 

這變淡音樂回好了,但是,它隨時調出量不到什麼設置之前。

我怎麼能實現這個回到原來的音量? 在此先感謝。

回答

3

你是說if (musicPlayer.volume < musicVolume)基本上是停止被稱爲performSelector: withObject: afterDelay:方法,或者叫以任何方法if語句,一旦musicPlayer.volume等於或更大的musicVolume。但你希望它是平等的。因此,嘗試:

- (void) fadeMusicIn 
{ 
    ... 
     if (musicPlayer.volume == musicVolume) 
      [self performSelector: @selector(fadeMusicIn) 
         withObject: nil 
         afterDelay: 0.1 ]; 
    ... 
} 

這樣,如果musicPlayer.volume小於或等於,所以一旦它的平等,它停止

更新if語句停止,嘗試==代替

+0

謝謝你的回覆。我確實嘗試了這一點,這使得差異更小一些。但是,問題依然存在。假設你從第0.8捲開始。你將它淡化到0.0,然後再回到0.8。此時,我從MusicPlayer.Volume和musicVolume中獲得了NSLog,它們都讀取相同的內容。然而,耳機發出的實際音樂音量較低。 – Gizmodo

+0

我已經更新了答案 – MCKapur

+0

我也可以看到你的fadeMusicOut代碼 – MCKapur

相關問題