2013-10-12 53 views
0

所以我看到了其他遊戲示例,並且看到了遊戲如何使用暫停按鈕時聲音暫停的功能,並且在恢復時,聲音恢復到原來的位置。Cocos2D CocosDenshion如何暫停...不停止聲音效果

我自己找到了答案。

+0

如果您有此問題的答案,請將其作爲下面的答案發布。 – Voldemort

+0

如果你是指我,我並沒有降低它。但是你應該知道在回答部分提出答案是常識。我想你是爲此而低估的,這很有道理。你不應該侮辱隨機的人糾正你。 – Voldemort

+0

我不是指你兄弟。寒意。那就是爲什麼我寫了'某人'。 但無論如何。無論如何謝謝你的建議。 –

回答

3

所以我做了一些研究,發現這個很棒的修復。那麼不是一個修復,而是代碼的補充。更重要的是,它確實有效!

在CocosDenshion中包含SimpleAudioEngine以緩解您遊戲的音頻問題,您需要編輯該文件以便能夠暫停您的音效。

這是您需要插入CDSoundEngine類中的代碼,它位於CocosDenshion類內部的SimpleAudioEngine類中。複製它酷似如下:需要SimpleAudioEngine類被添加到能夠直接在您的cocos2d遊戲代碼使用方法

- (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(); 
} 

下面的代碼。

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

我在我的遊戲中使用了這段代碼,並且完美地工作。

免責聲明:本人不爲任何時間索賠本修正案。這是我在本網站發現的:http://nial.me/2012/06/pausing-and-resuming-sound-effects-in-cocos2d/然而,由於我沒有看到我提供的STACKOVERFLOW中的這個問題的任何類似解決方案。