J'essaie de montrer la fameuse ouverture/fermeture de l'animation du personnage de pacman dans un jeu de pacman jetable que je fais pour m'enseigner la programmation de jeux. Ce que je fais est de dessiner l'image de la bouche ouverte, puis de redessiner l'image de la bouche fermée exactement au même endroit (x/y). Mais cela ne fonctionne pas, et je vois tout le temps l'animation de la bouche fermée. Si je mets ceci dans une boucle, le système se fige et vous voyez scintillement où la bouche ouverte l'image, mais vous ne voyez pas les images remplacées.Comment montrer la bouche de Pacman ouvrir/fermer l'animation en Java avec double tampon?
J'ai testé et vérifié que les deux images sont chargées correctement et comme prévu.
Voilà ma fonction startAnim()
, elle est appelée lorsque vous cliquez deux fois à l'applet:
public void beginGame() //Called from engine.java
{
isRunning=true;
repaint();
pacman.startAnim();
}
public void startAnim() //In different class, pacman.java
{
Image orig;
while (engine.isRunning)
{
orig=this.getCurrentImg();
draw(engine.getGraphics());
this.setCurrImg(currImg2);
this.draw(engine.getGraphics());
this.setCurrImg(orig);
this.draw(engine.getGraphics());
try
{
Thread.sleep(100);
}
catch (InterruptedException e) {}
}
}
public void draw(Graphics g) //Called from engine.paint()
{
g.drawImage(getCurrentImg(), getX(),
getY(), engine);
}
Je fais déjà pas? en utilisant thread.sleep? –
vous avez besoin de 2 threads, une fois entre chaque changement. maintenant vous changez l'image, dessinez, changez, dessinez, dormez. – sfossen