2012-05-12 59 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

相关问题