Установить изображение перекрасить в Java - PullRequest
0 голосов
/ 12 октября 2018

Я пишу простую игру на 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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...