http://www.cnblogs.com/moon-7/archive/2012/04/23/2467145.html
//預加載背景音樂 和 預加載音效 在播放背景音樂與音效之前都要提前加載,爲了防止加載消耗時間發生與遊戲不同步;
[[SimpleAudioEngine sharedEngine] preloadBackgroundMusic:@"office_background.mp3"];
[[SimpleAudioEngine sharedEngine] preloadEffect:@"office_background.mp3"];
//播放背景音樂 和 循環播放背景音樂;
[[SimpleAudioEngine sharedEngine] playBackgroundMusic:@"office_background.mp3"];
[[SimpleAudioEngine sharedEngine] playBackgroundMusic:@"school_kissing.mp3" loop:YES];
//暫停播放背景音樂;
[[SimpleAudioEngine sharedEngine] pauseBackgroundMusic];
//繼續播放背景音樂(不是從頭開始播)
[[SimpleAudioEngine sharedEngine] resumeBackgroundMusic];
//停止播放背景音樂
[[SimpleAudioEngine sharedEngine] stopBackgroundMusic];
//設置背景音樂音量大小;
[CDAudioManager sharedManager].backgroundMusic.volume=1.0; //(volume值範圍爲0.0-1.0);
//背景音樂播放幾次:
[CDAudioManager sharedManager].backgroundMusic.numberOfLoops= int值;
//背景音樂播放完後:
[[CDAudioManager sharedManager] setBackgroundMusicCompletionListener:self selector:@selector(觸發的方法)];
//播放音效;
[[SimpleAudioEngine sharedEngine] playEffect:@"school_kissing.mp3"];
//pitch(值範圍:>0){值最大,音調越高,播放時間越短} pan:(值範圍:-1到1)貌似是左右聲道 gain:(值範圍:>0)音量大小;
[[SimpleAudioEngine sharedEngine] playEffect:@"office_background.mp3" pitch:3.0 pan:-1 gain:0.1];
有時我們需要循環播放一個音效;
可以做如下操作:
在 #import "SimpleAudioEngine.h" 源碼中:
-(ALuint) playEffect:(NSString*) filePath loop:(BOOL)loop;
-(ALuint) playEffect:(NSString*) filePath pitch:(Float32) pitch pan:(Float32) pan gain:(Float32) gain loop:(BOOL)loop;
在 #import "SimpleAudioEngine.m"源碼中 實現方法:
-(ALuint) playEffect:(NSString*) filePath loop:(BOOL)loop
{
return [self playEffect:filePath pitch:1.0f pan:0.0f gain:1.0f loop:loop];
}
-(ALuint) playEffect:(NSString*) filePath pitch:(Float32) pitch pan:(Float32) pan gain:(Float32) gain loop:(BOOL)loop
{
int soundId = [bufferManager bufferForFile:filePath create:YES];
if (soundId != kCDNoBuffer) {
return [soundEngine playSound:soundId sourceGroupId:0 pitch:pitch pan:pan gain:gain loop:loop];
} else {
return CD_MUTE;
}
}
這樣我們就可以用如下方法實現音效循環播放:
//loop循環播放音效;
[[SimpleAudioEngine sharedEngine] playEffect:@"school_kissing.mp3" loop:YES];
[[SimpleAudioEngine sharedEngine] playEffect:@"school_kissing.mp3" pitch:1.0 pan:0.0 gain:1.0 loop:YES];
停止播放音效:設一個全局的靜態變量:
static int i=1;(隨便賦個值)
在播放音效時候 i=[[SimpleAudioEngine sharedEngine] playEffect:@"school_kissing.mp3" loop:YES];
停止播放音效: [[SimpleAudioEngine sharedEngine] stopEffect:i];
需要注意的是:如有多個音效播放,索引值不能是同一個, 因爲每次播放都會返回一個int值如:
i=[[SimpleAudioEngine sharedEngine] playEffect:@"abc.mp3" loop:YES]; i=[[SimpleAudioEngine sharedEngine] playEffect:@"def.mp3" loop:YES];
[[SimpleAudioEnginesharedEngine] stopEffect:i];
//播放abc可能返回值爲100,播放def返回爲101,這樣通過同一個索引“i”就不能停止abc的播放了;
你會發現,還在循環播放;必須使用不同的“索引”才行;