ゲームプログラミングを独学するために作っている使い捨てのパックマンゲームで、パックマンキャラクターの有名な口の開閉アニメーションを表示しようとしています。
私がやっていることは、開いた口の画像を描画してから、まったく同じ (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);
}