【问题标题】:Cocos2D CocosDenshion How to PAUSE...NOT STOP sound effectsCocos2D CocosDenshion 如何暂停...不停止音效
【发布时间】:2013-10-13 06:20:40
【问题描述】:

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

自己找到了答案。

【问题讨论】:

  • 如果您有这个问题的答案,请将其作为答案发布在下面。
  • 如果你指的是我,我没有投反对票。但是你应该知道,将答案放在答案部分是常识。我想你被否决了,这是有道理的。你不应该因为纠正你而侮辱随机的人。
  • 我不是说你兄弟。寒意。这就是我写“某人”的原因。但无论如何都可以。无论如何感谢您的建议。

标签: cocos2d-iphone


【解决方案1】:

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

在包含 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/ 但是,由于我没有在 StackOverflow 中看到任何类似的解决方案,所以我提供了它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    • 2014-06-10
    • 2019-12-04
    • 1970-01-01
    相关资源
    最近更新 更多