0

そこで、他のゲームの例を見て、一時停止ボタンが押されたときにサウンドが一時停止し、再開するとサウンドが元の場所から再開するという機能がゲームにどのように備わっているかを確認しました。

答えは自分で見つけました。

4

1 に答える 1

3

そこで、いくつかの調査を行ったところ、この素晴らしい修正が見つかりました。修正ではなく、コードへの追加です。さらに重要なことに、それは機能します!

ゲームのオーディオの問題を緩和する SimpleAudioEngine を含む CocosDenshion では、サウンド エフェクトを一時停止できるようにファイルを編集する必要があります。

これは、CocosDension クラス内の 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();
}

cocos2d ゲーム コードでメソッドを直接使用できるようにするには、SimpleAudioEngine クラスに次のコードを追加する必要があります。

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

このコードをゲームで使用しましたが、完全に機能します。

免責事項:私は、この修正に対する信用をいつでも主張しません。これは、このサイトで私が見つけたものです: http://nial.me/2012/06/pausing-and-resuming-sound-effects-in-cocos2d/ STACKOVERFLOW 私が提供します。

于 2013-10-12T12:08:37.407 に答える