2017-06-09 5 views
0

Ich habe eine gültige Animation namens diceAnimation von einem gültigen TextureAtlas namens dice, die mehrere Frames enthält. Worüber ich ein Problem habe, ist das Rendering. Ich verwende den folgenden Code, um die Animation zu rendern, aber es zeigt nur den ersten Frame. Wenn ich timeElapsed setze, um jedes Mal eine hinzuzufügen, anstatt die Delta-Zeit zu verwenden, animiert es aber WIRKLICH SCHNELL, wobei die in der Konstruktion definierten Frames pro Sekunde ignoriert werden. Hat jemand Ideen?Animation nicht spielen (LibGDX)

int elapsedTime; 

@Override 
public void create() { 
    batch = new SpriteBatch(); 
    dice = new TextureAtlas("textures/dice/dice.atlas"); 
    diceAnimation = new Animation<TextureRegion>(0.033f, dice.findRegions("one"), PlayMode.LOOP); 
} 

// ... 

@Override 
public void render() { 
    elapsedTime += Gdx.graphics.getDeltaTime(); 

    Gdx.gl.glClearColor(1, 0, 0, 1); 
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 

    batch.begin(); 
    batch.draw(diceAnimation.getKeyFrame(elapsedTime, true), 100, 100); 
    batch.end(); 
} 

Antwort

1

Datentyp int elapsedTime sollte statt int sein schweben.


OFF_TOPIC

PlayMode.LOOP ist PlayMode von diceAnimation so können Sie

verwenden
batch.draw(diceAnimation.getKeyFrame(elapsedTime), 100, 100);