J'essaye de faire un jeu, et il y a un bouton crédits. Lorsque vous cliquez sur le bouton crédits, un gif apparaît et se déroule comme les crédits à la fin d'un film. Le GIF dure 10,25 secondes. J'essaye de dessiner quelque chose quand le GIF se termine, mais la seule façon de le détecter est de faire Thread.sleep (10250); puis en le dessinant. Cependant, Thread.sleep met le gif en pause, puis le reprend après 10 secondes. Voici le code correspondant:Thread.sleep pendant qu'un GIF joue
public void paint(Graphics g){
Graphics2D g2 = (Graphics2D) g;
if(onFrontPage == true){
g2.drawImage(frontpage, 0, 0, this);
}
if(credits == true){
g2.drawImage(creditsgif, 0, 0, this);
}
if(aftercredits == true){
g2.drawImage(creditsimg, 0, 0, this);
}
}
// Checks credits button
if(e.getX() > 549 && e.getY() > 458 && e.getX() < 749 && e.getY() < 534){
credits = true;
onFrontPage = false;
repaint();
try {
Thread.sleep(10250);
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
credits = false;
aftercredits = true;
repaint();
}
Je suis en train de dessiner l'image « creditsimg » après le gif est terminé, mais le sommeil de fil est une pause gif au début pendant 10 secondes et puis le démarrage gif . Comment puis-je faire fonctionner Thread.sleep en arrière-plan afin qu'il n'interfère pas avec le gif?
Impossible d'utiliser le mot clé "this" pour ImageObserver, que dois-je utiliser à la place? Dans les tutoriels, j'ai regardé que c'était toujours "ceci" et ils n'ont jamais expliqué ce qu'est le ImageObserver ... – Joey402