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