Android — Крикет Аудио. Во время воспроизведения многих эффектов CkSound лучше всего уничтожить CkSound?

С использованием Cricket Audio Sound Engine (IOS & андроид) как бы настроить пулемет типа звукового эффекта. Мне нужно уметь воспроизводить много экземпляров звука в секунду. Звуковые эффекты должны накладываться друг на друга.

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

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

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

-Стив —Cricket Audio Creator ответил по электронной почте

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]