我在我的游戏中使用cocos denshion作为音乐。 我目前在播放背景音乐的代码:
[[SimpleAudioEngine sharedEngine] playBackgroundMusic:@“backSong.mp3”];
但是,当游戏结束时,我需要逐渐淡出背景音乐。我如何淡出背景音乐,是否有办法做到这一点?提前致谢! 此外,ObjectAL是否比CocosDenshion更好?如果是这样,有什么区别/优势?CocosDenshion音乐淡出
2
A
回答
2
我发现这样做的唯一的办法是安排用于执行的方法和改变音量相应地设置,种如下:
-(void) fadeOutBackgroundMusic{
if (!currentBackgroundMusic_) {
CCLOG(@"GESoundServicesProviderImpl<fadeOutBackgroundMusic> : No background music at this time, ignoring.");
return;
}
fadeOutActionTickerCount_=0;
[self schedule:@selector(tickMusicFadeOut:)];
}
-(BOOL) isPlayingBackgroundMusic{
return isPlayingBackgroundMusic_;
}
#pragma mark sequencing stuff
-(void) tickMusicFadeOut:(ccTime) dt{
static float fadeTime;
static float volume;
static float maxVolume;
fadeOutActionTickerCount_++;
if (1==fadeOutActionTickerCount_) {
isPerformingFadeOutAction_ =YES;
fadeTime=0.0f;
volume=0.0f;
maxVolume=audioSettings_.masterVolumeGain*audioSettings_.musicCeilingGain;
} else {
fadeTime+=dt;
volume=MAX(0.0f, maxVolume*(1.0 - fadeTime/K_MUSIC_FADE_TIME));
[self setMusicVolume:volume];
if (fadeTime>K_MUSIC_FADE_TIME) {
volume=0.0f; // in case we have a .000000231 type seting at that moment.
}
if (volume==0.0f) {
CCLOG(@"GESoundServicesProviderImpl<tickMusicFadeOut> : background music faded out in %f seconds.",fadeTime);
[self setMusicVolume:0.0f];
[sharedAudioEngine_ stopBackgroundMusic];
self.currentBackgroundMusic=nil;
isPlayingBackgroundMusic_=NO;
isPerformingFadeOutAction_=NO;
[self unschedule:@selector(tickMusicFadeOut:)];
}
}
}
这是从我的声音服务的简化(编辑)的样品提供者实现类(未按此处所示进行测试)。总体思路是安排一种方法,在一段时间内逐渐淡出音乐(这里是一个应用程序范围内的常量,K_MUSIC_FADE_TIME)。
9
试试这个:
float currentVolume = [SimpleAudioEngine sharedEngine].backgroundMusicVolume;
id fadeOut = [CCActionTween actionWithDuration:1 key:@"backgroundMusicVolume" from:currentVolume to:0.0f];
[[[CCDirector sharedDirector] actionManager] addAction:fadeOut target:[SimpleAudioEngine sharedEngine] paused:NO];
希望帮助!
相关问题
- 1. Java:淡出音乐
- 2. 点击锚链接淡入/淡出音乐
- 3. howler.js - 按钮淡入和淡出音乐类变化
- 4. 德尔福:音乐播放器中的淡入淡出曲目
- 5. 如何在HTML中淡入/淡出背景音乐(无Flash)?
- 6. 用javascript淡入/淡出播放/暂停音乐
- 7. cocosdenshion当前正在播放的音乐文件
- 8. 如何在场景之间淡出音频/音乐?
- 9. “CocosDenshion/android/SimpleAudioEngine”出错
- 10. javascript音频淡出
- 11. java声音淡出
- 12. Android:如何为我的应用播放的任何音乐文件创建淡入/淡出音效?
- 13. 音乐Y或音乐N
- 14. 用CocosDenshion按顺序播放声音?
- 15. 录制的声音不带CocosDenshion打
- 16. 淡入淡出HTML5音频逻辑
- 17. 如何淡入/淡出音频HTML5
- 18. ffmpeg:音频/视频淡入淡出
- 19. 声音使用ActionScript 3淡入/淡出
- 20. 在iPhone SDK中淡入淡出音频
- 21. FFmpeg音频交叉淡入淡出
- 22. Jquery - 淡入淡出后的音频
- 23. 列出音乐文件
- 24. Javascript全部音频淡出
- 25. 立即淡出音频
- 26. 点击时淡出音频音量?
- 27. 音乐
- 28. 停止音乐应用播放音乐
- 29. 停止音乐结束后的音乐
- 30. 连续播放音乐的音乐
巧妙实现只有3行。我喜欢聪明的代码。根据问题应该首选这个答案。 – gdbj