Крикет Аудио. При воспроизведении множества эффектов CkSound, лучше всего вызвать команду destroy CkSound?

Используя Cricket Audio Sound Engine (ios и android), как настроить звуковой эффект пулеметного типа. Мне нужно иметь возможность воспроизводить много экземпляров звука в секунду. Звуковые эффекты должны накладываться друг на друга.

Мое решение состоит в том, чтобы создать новый экземпляр CkSound и забыть о нем. Я не вижу простого способа уничтожить звук без сложного метода отслеживания звука. Не вызовет ли это проблемы с памятью, поскольку я создаю тысячи звуков CkSound в течение сеанса игры? Я действительно не хочу отслеживать отдельные звуки для сборки мусора.

// Example sound effect call
void SoundManager::playEffect(const char* name){
    // I make a sound , play it , and forget about it
    sound = CkSound::newBankSound(g_bank, name);
    sound->play();
}

person Andrew Garrahan    schedule 26.10.2013    source источник


Ответы (1)


Я не рекомендую вам создавать экземпляры и не уничтожать их, так как это утечка памяти, поэтому ваше приложение со временем будет использовать все больше и больше памяти.

Вы можете попробовать что-то вроде этого…

для инициализации:

const int k_maxSounds = 5; // maximum number of sound instances to be playing at once
CkSound* g_sounds[k_maxSounds];
for (int i = 0; i < k_maxSounds; ++i)
{
   g_sounds[i] = CkSound::newBankSound(g_bank, name);
}

чтобы воспроизвести другой экземпляр звука, найдите первый доступный экземпляр и воспроизведите его:

for (int i = 0; i < k_maxSounds; ++i)
{
   if (!g_sounds[i]->isPlaying())
   {
      g_sounds[i]->play();
      break;
   }
}

-steve -Создатель Cricket Audio ответил по электронной почте

person Andrew Garrahan    schedule 26.10.2013