我已经广泛搜索了如何使用简单的音频引擎循环播放音效,但除了在 cocos2d 论坛上使用循环 sfx 打招呼之外没有取得太大进展,这有几个问题。如何在 Simple Audio Engine 中循环播放音效?
问问题
1693 次
2 回答
1
您需要编辑 SimpleAudioEngine
将此添加到 SimpleAudioEngine.h
-(int) playEffect:(NSString*) file loop:(BOOL) loop;
将此方法添加到 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]
于 2013-11-30T23:14:15.597 回答
0
对于音效无限循环,直到您希望它停止。这就是你如何做到这一点而不会弄乱其他任何东西。
确保将 CDSoundSource 强引用保存在使用它的类或对象中,这样您就可以随时停止它。
由于它是标识该音效的唯一 ID,因此您可以运行该音效的多个实例。例如:当您需要 2 架直升机并且每架直升机都有自己的无限引擎声音时。
//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 修改根文件
于 2014-04-28T03:05:18.297 回答