En la mayoría de los backends no hay forma de restablecer detlaTime ... Esto conduce a la imposibilidad de cambiar de renderizado no continuo a renderizado continuo cuando se necesita una animación (especialmente cuando se animan menús en scene2d.ui). Por ejemplo, al configurar una animación 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);
}
});
Cuando se presiona el botón en renderizado no continuo, la apariencia se actualiza, pero si el evento up conduce al evento click 1 segundo después del evento down, el getDeltaTime () es mayor que la duración de la animación ... por lo que establecer el renderizado continuo en verdadero no tiene ningún efecto y la animación terminó de inmediato.
Me gustaría tener una forma de establecer el deltaTime en cero al cambiar a renderizado continuo para que el primer _new_ frame coincida con el primer fotograma de la animación (y no el último):
Lo estoy haciendo con introspección, que no es realmente una buena manera, pero me ahorra mucha batería y me quedo con las animaciones.
Qué piensas ?
Podría (y debería) limitar el tiempo delta a un valor máximo.
Vea cómo se hace en https://github.com/libgdx/libgdx/blob/master/tests/gdx-tests/src/com/badlogic/gdx/tests/ActionTest.java
¡Esa es una buena solución!
Prueba esto
maxtime = 0.2f
delta = delta> maxTime? maxTime: delta;
salta a un máximo de 5 fotogramas si obtiene 30 fps (el mínimo permitido para un movimiento suave)
Comentario más útil
Podría (y debería) limitar el tiempo delta a un valor máximo.
Vea cómo se hace en https://github.com/libgdx/libgdx/blob/master/tests/gdx-tests/src/com/badlogic/gdx/tests/ActionTest.java