Cocos2D CocosDenshion 如何暂停..不停止音效



所以我看到了其他游戏示例,并看到了游戏如何具有此功能,即按下暂停按钮时声音暂停,恢复时,声音准确地恢复到原地。

自己找到了答案。

所以我做了一些研究,发现了这个很棒的修复。好吧,不是修复,而是对代码的补充。更重要的是,它确实有效!

在包含SimpleAudioEngine的CocosDenshion中,您可以编辑文件才能暂停声音效果。

这是您需要插入到CDSoundEngine类中的代码,该类位于CocosDenshion类中的SimpleAudioEngine类中。 复制它 完全像下面这样:

- (void)pauseAllSounds 
{
for (int i=0; i < sourceTotal_; i++) 
{
    ALint state;
alGetSourcei(_sources[i].sourceId, AL_SOURCE_STATE, &state);
if(state == AL_PLAYING) 
{
    alSourcePause(_sources[i].sourceId);
}
}   
alGetError();
}   
- (void)resumeAllSounds 
{
for (int i=0; i < sourceTotal_; i++) 
{
ALint state;
alGetSourcei(_sources[i].sourceId, AL_SOURCE_STATE, &state);
if(state == AL_PAUSED) 
{
        alSourcePlay(_sources[i].sourceId);
}
}   
alGetError();
}

需要在 SimpleAudioEngine 类中添加以下代码,以便能够直接在 cocos2d 游戏代码中使用该方法。

 - (void)pauseAllEffects 
{ 
[soundEngine pauseAllSounds]; 
} 
- (void)resumeAllEffects 
{ 
[soundEngine resumeAllSounds]; 
}

我在游戏中使用了这段代码,并且运行良好。

免责声明:我在任何时候都不会为此修复程序声称功劳。这是我在这个站点上发现的: http://nial.me/2012/06/pausing-and-resuming-sound-effects-in-cocos2d/,但是,由于我在STACKOVERFLOW中没有看到任何类似的解决方案,因此我提供了它。

最新更新