I am trying to create an application using libgdx where i need an animation to be played on pressing an image button, i've been able to achieve it using this code

   if(slapBossFlag==true) {
        currentFrame = animation.getKeyFrame(timePassed, true);
            timePassed += Gdx.graphics.getDeltaTime();
        Gdx.app.log("time","time is"+timePassed);
            batch.draw(currentFrame, screenWidth / 2 - ((currentFrame.getRegionWidth()) / 2), screenHeight / 2 - ((currentFrame.getRegionHeight()) / 2));
            slapBossFlag = false;

the problem is the animation goes by too quickly.

i've tried setting timePassed to zero when slapBossFlag is false, and that didnt work.

Can anyone help?


1 Answer 1


You missuse the animation class.

you need to do the following:

currentframe = animation.getKeyFrame(Gdx.graphics.getDeltaTime(), true);

Currently you use an increasing time for your time passed. which is wrong, the animation class handles the passed time by itself.

Easier explained: Imagine a cake. If you eat constantly 3 percent you'll see it fade slowly away(what you want). On the other hand If you eat first 3 percent, than 6 percent and than 9 percent(what you have) the animation is fked up.

  • \$\begingroup\$ I understand what you are saying but it doesn't work. should i post entire code? \$\endgroup\$
    – Storm
    Commented Jun 30, 2016 at 12:14

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .