Audio 如何在简单的音频引擎中循环声音效果
我已经广泛地搜索了如何使用简单的音频引擎循环声音效果,但是除了cocos2d论坛之外,没有取得太大的进展,该论坛有几个问题。如何在Simple Audio Engine中循环声音效果?您需要编辑SimpleAudio引擎 将此添加到SimpleAudioEngine.hAudio 如何在简单的音频引擎中循环声音效果,audio,cocos2d-iphone,simpleaudioengine,soundeffect,Audio,Cocos2d Iphone,Simpleaudioengine,Soundeffect,我已经广泛地搜索了如何使用简单的音频引擎循环声音效果,但是除了cocos2d论坛之外,没有取得太大的进展,该论坛有几个问题。如何在Simple Audio Engine中循环声音效果?您需要编辑SimpleAudio引擎 将此添加到SimpleAudioEngine.h -(int)playEffect:(NSString*)文件循环:(BOOL)循环 将此方法添加到SimpleAudioEngine.m -(int) playEffect:(NSString*) file loop:(BOOL
-(int)playEffect:(NSString*)文件循环:(BOOL)循环代码>
将此方法添加到SimpleAudioEngine.m
-(int) playEffect:(NSString*) file loop:(BOOL) loop
{
int handle = [[SimpleAudioEngine sharedEngine] playEffect:file];
if (loop) {
alSourcei(handle, AL_LOOPING, 1);
}
return handle;
}
要循环声音效果或音乐,只需执行以下操作
ALuint yourSoundALuint = [[SimpleAudioEngine sharedEngine] playEffect:@"yourSound.caf" loop:YES];
必要时停止循环播放音乐
[[SimpleAudioEngine sharedEngine] stopEffect:yourSoundALuint]
您需要编辑SimpleAudioEngine
将此添加到SimpleAudioEngine.h
-(int)playEffect:(NSString*)文件循环:(BOOL)循环代码>
将此方法添加到SimpleAudioEngine.m
-(int) playEffect:(NSString*) file loop:(BOOL) loop
{
int handle = [[SimpleAudioEngine sharedEngine] playEffect:file];
if (loop) {
alSourcei(handle, AL_LOOPING, 1);
}
return handle;
}
要循环声音效果或音乐,只需执行以下操作
ALuint yourSoundALuint = [[SimpleAudioEngine sharedEngine] playEffect:@"yourSound.caf" loop:YES];
必要时停止循环播放音乐
[[SimpleAudioEngine sharedEngine] stopEffect:yourSoundALuint]
为声音效果无限循环,直到您希望它停止。
这就是你如何做到这一点而不弄糟任何其他事情
确保将CDSoundSource强引用保存在正在使用它的类或对象中,以便可以随时停止它
因为它是唯一标识该音效的ID,通过这种方式,您可以运行该音效的多个实例。
例如:当你需要两架直升机时,每架直升机都有自己无限的发动机声音
//Create SFX
-(CDSoundSource*)playInfiniteHeliPad
{
CDSoundSource *loopSound = [[SimpleAudioEngine sharedEngine] soundSourceForFile:@"Sound.m4a"];
loopSound.looping = YES;
loopSound.gain = 0.5f;//Volume
[loopSound play];
return loopSound; //Return the CDSoundSourse
}
//Stop Infinite loop SFX.
-(void)stopInfiniteHeliPad:(CDSoundSource*)loopSound {
[loopSound stop];
}
这很容易实现,并且不需要修改Cocos2Denshion中的根文件即可实现音效无限循环,直到您希望它停止为止。
这就是你如何做到这一点而不弄糟任何其他事情
确保将CDSoundSource强引用保存在正在使用它的类或对象中,以便可以随时停止它
因为它是唯一标识该音效的ID,通过这种方式,您可以运行该音效的多个实例。
例如:当你需要两架直升机时,每架直升机都有自己无限的发动机声音
//Create SFX
-(CDSoundSource*)playInfiniteHeliPad
{
CDSoundSource *loopSound = [[SimpleAudioEngine sharedEngine] soundSourceForFile:@"Sound.m4a"];
loopSound.looping = YES;
loopSound.gain = 0.5f;//Volume
[loopSound play];
return loopSound; //Return the CDSoundSourse
}
//Stop Infinite loop SFX.
-(void)stopInfiniteHeliPad:(CDSoundSource*)loopSound {
[loopSound stop];
}
这很容易实现,并且不需要修改Cocos2Denshion中的根文件