AndEngine - лагает при воспроизведении звука

Я создаю простую игру с AndEngine. Мяч падает на пол, и всякий раз, когда он сталкивается с полом, я хочу воспроизвести короткий звук столкновения. В методе onUpdate() я проверяю наличие столкновений и соответственно проигрываю звук.

Я использую класс Sound для воспроизведения звука (как в SoundExample AndEngine). Тестирование на Samsung Galaxy S2.

Проблема в том, что программа зависает при воспроизведении звука. И это даже влияет на игровую физику (иногда мяч отскакивает выше высшей точки при отключении звука).

Это код:

public void onUpdate(float pSecondsElapsed) {
// mSound.play();       
if (this.mSprite.collidesWith(ball.getSprite())) {          
    if (!colliding && mSound != null){ // play sound for first collision only
        mSound.play();          
        colliding = true;
    }
}
else{
    colliding = false;
}

}

Если я удалю mSound.play() или продолжу воспроизводить звук (удалю комментарий в строке 2), программа будет работать гладко.

Кто-нибудь сталкивается с такой же проблемой? И есть решение, чтобы избавиться от лагов? Большое спасибо!


person Lucas    schedule 08.06.2012    source источник
comment
Мне удалось решить эту проблему, просто вызывая .play() каждый раз в новом потоке. Не лучшее решение, я полагаю, но это убрало лаги.   -  person Ixanezis    schedule 08.12.2012


Ответы (1)


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

метод collidesWith(), вероятно, является вашим виновником, помните, что onUpdate вызывается каждый кадр.. возможно, вам придется изменить свой код или ограничить количество кадров в секунду [измените параметры вашего движка, чтобы использовать FixedStepEngine для достижения этого]

person Jimmar    schedule 05.11.2012
comment
Нет, даже если я создам новый поток вне onUpdate для воспроизведения звука (1 раз в секунду), проблема все равно возникнет. - person Lucas; 08.11.2012