저는 제 자신이 게임 프로그래밍을 가르치고있는 쓰레기 팩맨 게임에서 팩맨 캐릭터의 유명한 개폐 애니메이션을 보여 주려고합니다.더블 버퍼링을 사용하여 Java에서 Pacman의 입/닫기 애니메이션을 표시하는 방법은 무엇입니까?
내가하고있는 것은 열린 입 이미지를 그려 넣은 다음 닫힌 입 이미지를 똑같은 (x/y) 위치에 다시 그리는 것입니다. 그러나 이것은 효과가 없으며 닫힌 입 애니메이션을 항상 보았습니다.
이것을 루프에 넣으면 시스템이 정지되고 입이 벌어지는 이미지가 깜박 거리며 이미지가 교체되는 것을 볼 수 없습니다.
필자는 두 이미지가 올바르게 올바르게로드되었는지 테스트했습니다. 당신은 두 이미지 사이에 잠이
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);
}
나는 이미 아무 것도하지 않는거야? thread.sleep를 사용하고 있습니까? –
각 변경 사이에 한 번씩 두 개의 스레드가 필요합니다. 지금 당신은 이미지를 바꾸고, 끌고, 변경하고, 끌고, 자려고합니다. – sfossen