MPMusicPlayerController Volume Fade

时间:2012-05-12 23:23:47

标签: ios ipod volume

我有:

 MPMusicPlayerController *musicPlayer = [MPMusicPlayerController iPodMusicPlayer];

使用该应用程序时,我需要关闭音乐以发出警报,当它消失时,我想把它提升到之前的音量。 musicVolume这里是一个双倍,它在褪色前存储音量:

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 
            {

            }
    }

这样可以很好地消除音乐,然而,音量总是比以前设定的音量低。

如何实现这一目标以恢复原始音量? 提前谢谢。

1 个答案:

答案 0 :(得分:3)

你说if (musicPlayer.volume < musicVolume)基本上停止调用performSelector: withObject: afterDelay:方法,或者musicPlayer.volumemusicVolume相等或更大时调用if语句中的任何方法1}}。但是你希望它是平等的。所以试试:

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

这样if语句会在musicPlayer.volume小于或等于时停止,所以一旦它相等,它就会停止

更新,尝试==而不是