2017-05-18 1 views
-2

J'essaye d'animer un personnage, mais je ne suis pas tout à fait sûr comment obtenir sleep() pour fonctionner. L'idée est que l'image change toutes les secondes jusqu'à la fin de l'animation. À partir de maintenant, si vous appuyez sur la barre d'espace, l'animation doit s'exécuter. Voici ce que j'ai jusqu'à présent:Problème avec Java en attente

Image[] imageArray = new Image[4]; 
imageArray[0] = getImage(getDocumentBase(), "Death1.png"); 
imageArray[1] = getImage(getDocumentBase(), "Death2.png"); 
imageArray[2] = getImage(getDocumentBase(), "Death3.png"); 
imageArray[3] = getImage(getDocumentBase(), "Death4.png"); 

for(int i = 1; i <= 4; i++) { //Or any Loops 
    try { 
     //player is just where the image is stored & painted 
     player = imageArray[i]; 
     repaint(); 
     Thread.sleep(1000); 
    } 
    catch (InterruptedException ex) {} 
} 
+0

Si je ne l'ai pas bien expliqué, faites le moi savoir! Je suis nouveau à cela :-) –

+3

Je pense que ce que vous devez vraiment faire est de faire une recherche sur "Swing" et "Thread.sleep" - à laquelle vous serez probablement pointé sur des choses comme [Concurrency en Swing] (https : //docs.oracle.com/javase/tutorial/uiswing/concurrency/) et [Comment utiliser les Timers Swing] (https://docs.oracle.com/javase/tutorial/uiswing/misc/timer.html) parce que cette question est posée une demi-douzaine de fois par jour et la réponse est presque toujours la même – MadProgrammer

+0

[Un exemple de recherche] (http://stackoverflow.com/search?q=%5Bjava%5D+%5Bswing%5D+thread.sleep) – MadProgrammer

Répondre

0

Appel repaint ne pas repeindre immédiatement le composant. Il génère juste un événement qui est ajouté à la file d'attente des événements. La file d'attente des événements sera traitée plus tard.

Dormir signifie que vous ne passez jamais au point où la file d'attente des événements sera traitée. Vous ajoutez juste l'événement repaint quatre fois.

Vous souhaitez probablement créer un nouveau sujet. Ce thread exécute votre code et est indépendant du thread principal. Le thread principal peut gérer tous les événements et votre thread peut dormir.

+0

Très bien, je vais essayer ça! –