所以我看了其他游戏的例子,看到游戏有这个功能,按下暂停按钮时声音暂停,当恢复时,声音恢复到原来的位置。
自己找到了答案。
所以我做了一些研究,发现了这个很棒的修复。好吧,不是修复,而是代码的补充。更重要的是,它确实有效!
在包含 SimpleAudioEngine 的 CocosDenshion 中,为了缓解游戏的音频问题,您需要编辑文件才能暂停音效。
这是您需要在 CocosDenshion 类中 SimpleAudioEngine 类中的 CDSoundEngine 类中插入的代码。复制如下:
- (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/但是,因为我没有看到任何类似的解决方案来解决这个问题堆栈溢出我提供它。