我有:
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
{
}
}
这样可以很好地消除音乐,然而,音量总是比以前设定的音量低。
如何实现这一目标以恢复原始音量? 提前谢谢。
答案 0 :(得分:3)
你说if (musicPlayer.volume < musicVolume)
基本上停止调用performSelector: withObject: afterDelay:
方法,或者musicPlayer.volume
与musicVolume
相等或更大时调用if语句中的任何方法1}}。但是你希望它是平等的。所以试试:
- (void) fadeMusicIn
{
...
if (musicPlayer.volume == musicVolume)
[self performSelector: @selector(fadeMusicIn)
withObject: nil
afterDelay: 0.1 ];
...
}
这样if语句会在musicPlayer.volume
小于或等于时停止,所以一旦它相等,它就会停止
更新,尝试==而不是