J'utilise la classe Animator du Timing Framework pour effectuer une animation simple (déplacement d'un JPanel), à peu près à partir d'exemples dans Filthy Rich ClientsJava Framework timing - événement déclencheur à la fin d'une animation Animator
J'ai surchargée timingEvent() comme suit
public void timingEvent(float arg0) {
float fraction = this.animator.getTimingFraction();
fraction = Math.min(1.0f, fraction);
if (fraction >= 1.0f) {
this.mainGUI.initiateSwitchToMainScreenTransition();
} else if (fraction < 0.5f) {
this.translateY = (int) (MAX_Y * (2 * fraction));
repaint();
}
}
J'ai peinture surchargée() pour utiliser la valeur translateY pour déplacer le panneau vers le bas.
L'animation elle-même fonctionne parfaitement.
Mon problème est l'appel à launchSwitchToMainScreenTransition(), que je veux effectuer lorsque l'animation est terminée. Alors que cela fonctionne, il y a un retard important entre la fin de l'animation et le déclenchement de l'appel (le débogage a confirmé que le problème n'est pas la durée du temps initialisé par initSwitchToMainScreenTransition() - le délai se produit avant l'appel).
Y a-t-il un meilleur moyen d'y parvenir, c'est-à-dire sans délai?
Merci pour cela. J'ai effectivement remarqué la méthode end() la nuit dernière et suis passé à l'utiliser. Cependant, il ne s'est pas débarrassé du retard malheureusement. J'ai mis mon animation à 1800ms mais il semble qu'elle se termine à peu près en 1000ms, ce qui entraîne un délai de 800ms avant que mon code ne soit déclenché. – William