Я пытаюсь показать знаменитую анимацию открытия / закрытия рта персонажа pacman в одноименной игре pacman, которую я создаю, чтобы научить себя программированию игры.
То, что я делаю, рисует изображение с открытым ртом, затем перерисовывает изображение с закрытым ртом в том же (x / y) месте. Но это не работает, и я все время вижу анимацию закрытого рта.
Если я поставлю это в цикл, система просто зависнет, и вы увидите мерцание, где это изображение с открытым ртом, но вы не увидите заменяемые изображения.
Я проверил и убедился, что оба изображения загружаются правильно и в соответствии с ожиданиями.
Вот моя startAnim()
функция, она вызывается при двойном щелчке апплета:
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);
}