1

我有:

 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 
            {

            }
    }

这可以很好地淡入音乐,但是,它总是使音量低于之前设置的音量。

我怎样才能做到这一点以恢复原始音量?提前致谢。

4

1 回答 1

3

您说的if (musicPlayer.volume < musicVolume)performSelector: withObject: afterDelay:,一旦musicPlayer.volume等于或大于musicVolume. 但你希望它是平等的。所以试试:

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

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

更新,试试 ==

于 2012-05-12T23:33:11.723 回答