Я пишу простую игру на Java, например, arkanoid, но у меня проблема с менеджером GUI.У меня есть панель, где я рисую все изображения.Изображения можно разделить на две категории: изображения, такие как шарик, которые нужно перекрасить очень быстро, и изображения, подобные блоку, который нужно перекрашивать только при столкновении.Когда игра начинается, она становится очень медленной, потому что команда this.repaint()
перерисовывает все изображения.Я ищу вопрос на сайте, как сделать перекрашивание медленнее, но я не нахожу ответа.Вот код
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2d = (Graphics2D)g;
this.paintVaus(g2d);
this.paintBall(g2d);
this.paintBlock(g2d);
}
private void paintBall(Graphics2D g2d){
g2d.drawImage(Ball.getInstance().getImage(), Ball.getInstance().getX(), Ball.getInstance().getY(), this);
if(DoubleBall.getInstance().getVisible()){
g2d.drawImage(Ball.getInstance().getImage(), DoubleBall.getInstance().getX(), Ball.getInstance().getY(), this);
}
}
private void paintBlock(Graphics2D g2d) {
try {
for(int i = 0; i < Model.getInstance().getnumberOfColumns(); i++){
for(int j = 0; j < Model.getInstance().getnumberOfRows(); j++){
if(Model.getInstance().getBlockArray(i, j) >= 1){
g2d.drawImage(Block.getInstance().getImage(i, j), widthBlock * i, heightBlock * j, this);
}
}
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
private void paintVaus(Graphics2D g2d){
g2d.drawImage(Vaus.getInstance().getImage(),
Vaus.getInstance().getX(), Vaus.getInstance().getY(), this);
}
@Override
public void actionPerformed(ActionEvent e) {
this.repaint();
}