我在我的遊戲中使用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