그래서 캐릭터의 위치에 폭탄을 넣을 수있는 게임을 만들고 있습니다. 폭탄이 표시 될 때 각각의 폭탄은 GIF 이미지와 연관되어 결국 붐 (Bomberman에 대해 생각하십시오)으로 이동합니다.캔버스 (Java)에서 동일한 애니메이션 GIF의 여러 인스턴스
문제는 화면에 두 개 이상의 폭탄을 칠하려 할 때 GIF의 마지막 프레임에서 그렸습니다. 조사해 보니 GIF 큐클을 재설정하는 image.flush() 메서드가 있지만 이제 문제는 화면에 두 번째 폭탄을 칠할 때마다 GIF주기가 이전의 폭탄에 맞게 다시 설정된다는 것입니다.
이public Tnt(int x, int y){
this.x = x;
this.y = y;
ImageIcon ii = new ImageIcon("src/main/resources/modelObjects/tnt.gif");
image = ii.getImage();
image.flush();
}
내가 만들 때마다 폭탄이 ArrayList에 (listTnt)를 입력하고 6 초 후에 제거되고, 그래서는 이미 활성화 폭탄 페인트 :
다음은 각 폭탄에 대한 내 생성자입니다.
여기서 도면 내 방법 :
public void draw(Graphics2D g2d, JPanel board){
for(Tnt tnt: listTnt){
g2d.drawImage(tnt.getImage(), tnt.getX(), tnt.getY(), board);
}
}
편집 : 그것은 Toolkit.getImage를 사용하여 이미지를 재사용하기 때문에, 문제는 이미지 아이콘임을 보인다. 대신 Toolkit.createImage는 재사용 할 수없는 이미지를 만듭니다. 심지어 그나마 지금 image.flush()
필요
public Tnt(int x, int y){
this.x = x;
this.y = y;
Toolkit t = Toolkit.getDefaultToolkit();
image = t.createImage("src/main/resources/modelObjects/tnt.gif");
}
:
여기에 완벽하게 작동 TNT에 대한 나의 새로운 생성자입니다. 다들 감사 해요.
'이미지'의 범위는 무엇입니까? – trashgod
응용 프로그램의 주요 게임 상태 내에서 나는 폭탄의 목록이 있습니다. 게임에 폭탄을 떨어 뜨리면 새로운 Tnt가 생성되어 목록에 추가되고 6 초 후 (폭탄 수명주기) 폭탄이 목록에서 제거됩니다. 'draw' 메소드는 목록에서 폭탄만을 칠하고'image'는 Tnt 내의 변수입니다. –
[Show an animated BG in Swing] (http://stackoverflow.com/questions/10836832/show-an-animated-bg-in-swing)도 참조하십시오. –