Audio 如何在简单的音频引擎中循环声音效果

Audio 如何在简单的音频引擎中循环声音效果,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

我已经广泛地搜索了如何使用简单的音频引擎循环声音效果,但是除了cocos2d论坛之外,没有取得太大的进展,该论坛有几个问题。如何在Simple Audio Engine中循环声音效果?

您需要编辑SimpleAudio引擎

将此添加到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]

您需要编辑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中的根文件