Na maioria dos back-ends, não há como redefinir detlaTime ... Isso leva à impossibilidade de alternar de renderização não contínua para renderização contínua quando uma animação é necessária (especialmente ao animar menus em scene2d.ui). Por exemplo, ao definir uma animação como esta:
final TextButton button = new TextButton("New Game", textButtonStyle);
button.addListener(new ClickListener() {
public void clicked(InputEvent event, float x, float y) {
Gdx.app.debug("TestApplication", "button clicked");
MoveToAction outAction = Actions.action(MoveToAction.class);
outAction.setPosition(0, 0);
outAction.setDuration(.5f);
outAction.setInterpolation(Interpolation.pow2Out);
button.addAction(Actions.sequence(outAction, Actions.run(new Runnable() {
<strong i="6">@Override</strong>
public void run() {
Gdx.graphics.setContinuousRendering(false);
Gdx.graphics.requestRendering();
}
})));
Gdx.graphics.setContinuousRendering(true);
}
});
Quando o botão é pressionado em uma renderização não contínua, a aparência é atualizada, mas se o evento up levar ao evento click 1 segundo após o evento down, o getDeltaTime () é maior do que a duração da animação ... portanto, definindo a renderização contínua como true não tem efeito e a animação termina imediatamente.
Eu gostaria de ter uma maneira de definir o deltaTime para zero ao mudar para a renderização contínua, de modo que o primeiro _novo_ quadro corresponda ao primeiro quadro da animação (e não ao último):
Estou fazendo isso com introspecção, o que não é muito bom, mas economiza bastante bateria e mantenho as animações.
O que você acha ?
Você pode (e deve) limitar o tempo delta a um valor máximo.
Veja como isso é feito em https://github.com/libgdx/libgdx/blob/master/tests/gdx-tests/src/com/badlogic/gdx/tests/ActionTest.java
Essa é uma boa solução alternativa!
Tente isto
maxtime = 0.2f
delta = delta> maxTime? maxTime: delta;
pula no máximo 5 quadros se você obtiver 30 fps (o menor permitido para movimento suave)
Comentários muito úteis
Você pode (e deve) limitar o tempo delta a um valor máximo.
Veja como isso é feito em https://github.com/libgdx/libgdx/blob/master/tests/gdx-tests/src/com/badlogic/gdx/tests/ActionTest.java