Cocos2D CocosDenshion如何暂停......不要停止声音效果

时间:2013-10-12 03:01:09

标签: cocos2d-iphone

所以我看到了其他游戏示例,看到了游戏如何具有按下暂停按钮时声音暂停的功能,并且当恢复时,声音恢复到原来的位置。

自己找到答案。

1 个答案:

答案 0 :(得分:3)

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

在包含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/但是,由于我没有看到我提供给这个问题的任何类似解决方案,我提供它。