Я использую поток для отображения анимации со спрайтом.
Explosion e2 = new Explosion(this, x2, y2, explosion);
new Thread(e2).start();
И в классе взрыва у меня есть:
public void run()
{
ActionListener taskPerformer = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
cursor++;
}
};
Timer timer = new Timer(50, taskPerformer);
while(cursor < (sprite.getNbSprite()-1))
{
timer.start();
drawExplosion();
}
timer.stop();
compteur--;
}
public void drawExplosion()
{
Graphics g = board.getGraphics();
board.repaint();
Graphics2D g2d = (Graphics2D)g;
g2d.drawImage(sprite.getSprite(cursor), x, y, this);
g.dispose();
}
Но во время отображения у меня естьПроблема, между каждым изображением спрайта есть пробел.Например, если дисплей мерцает.
Как отображать жидкость?Спасибо
РЕДАКТИРОВАТЬ ----------------------- У меня есть еще один вопрос.В моем классе Board я помещаю свой взрыв в ArrayList.Но я должен удалить объект в ArrayList, когда закончится поток взрыва.Есть ли у меня ArrayList для хранения всей моей нити взрыва, и по окончании нити я удаляю объект в ArrayList взрыва.Общественный класс расширяет JPanel {
Mouse mouse;
ArrayList<Explosion> explosions;
Sprite explosion;
public Board()
{
mouse = new Mouse(this);
explosion = new Sprite(320,320,5,5,"files/explosion2.png");
explosions = new ArrayList();
setDoubleBuffered(true);
this.addMouseListener(mouse);
}
public void addExplosion(int x, int y)
{
for(int i=0; i<100; i++)
{
int x2 = (int)(Math.random() * 450);
int y2 = (int)(Math.random() * 450);
Explosion e2 = new Explosion(this, x2, y2, explosion);
explosions.add(e2);
new Thread(e2).start();
}
}
public void removeExplosion(Explosion e)
{
explosions.remove(e);
}
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2d = (Graphics2D)g;
for(int i=0; i<explosions.size(); i++)
{
g2d.drawImage(explosion.getSprite(explosions.get(i).getCursorI()), explosions.get(i).getX(), explosions.get(i).getY(), this);
}
g.dispose();
}
}