我创造了一个声音,我这样玩:
NSURL *musicFile = [[NSBundle mainBundle] URLForResource:@"My music"
withExtension:@"mp3"];
self.backgroundMusic = [[AVAudioPlayer alloc] initWithContentsOfURL:musicFile
error:nil];
self.backgroundMusic.numberOfLoops = -1;
[self.backgroundMusic play];
但是当我改变观点时,我想停止音乐。但是,慢慢地,顺利地,不是立即。当您将应用程序置于后台时,您的音乐不会立即停止,而是大约0.5秒。
有可能吗?
谢谢!
答案 0 :(得分:2)
是的,有可能并且有几种方法可以实现这种“淡出”效果。
我在之前的项目中这样做了,它对我来说非常好用
-(void)fadeOut {
if (self.backgroundMusic.volume > 0.05) {
self.backgroundMusic.volume = self.backgroundMusic.volume - 0.05;
// Volume will be zero after ~0.5 seconds
[self performSelector:@selector(fadeOut) withObject:nil afterDelay:1.0/40.0];
} else {
[self.backgroundMusic stop];
}
}
答案 1 :(得分:0)
创建一个计时器并减少AVAudioPlayer的音量。
[NSTimer scheduledTimerWithTimeInterval: 1.0
target: self
selector:@selector(timerTriggered:)
userInfo: nil repeats:YES];
-(void)timerTriggered:(NSTimer *)timer
{
[appSoundPlayer setVolume: appSoundPlayer.volume - 0.1];
if(appSoundPlayer.volume == 0.0)
{
[timer inValidate];
timer = nil;
}
}