Буферизация изображений Java-игр оставляет хвост

#java #graphics #buffer #bufferstrategy

#java #графика #буфер #bufferstrategy

Вопрос:

У меня есть следующий класс (фрагмент), и в моем render() методе я использую буферизацию BufferStrategy . Проблема, с которой я сталкиваюсь, заключается в том, что когда я перемещаю изображение, оно оставляет хвост.

Пример с хвостом

Что мне нужно сделать с моим кодом, чтобы сделать так, чтобы хвост не отображался? Вот код:

 public class Main extends JFrame implements Runnable{

    private BufferStrategy bufferStrategy;

    public synchronized void start(){
        Thread thread = new Thread(this);
        thread.start();
    }

    public void run(){
        // Main Game Loop
        this.render();
        // End Main Game Loop
    }

    protected void render(){
        if(bufferStrategy == null){
            this.createBufferStrategy(3);
            bufferStrategy = this.getBufferStrategy();
        }
        Graphics g = bufferStrategy.getDrawGraphics();
        // Loop through a list of items to draw
        for(GameObject go : gameObjects){
            Image sprite = go.getComponent(SpriteRenderer.class).getSprite();
            Vector2 pos = go.getComponent(Transform.class).getPosition();
            g.drawImage(sprite, (int)pos.x, (int)pos.y, this);
        }
        g.dispose();
        bufferStrategy.show();
        Toolkit.getDefaultToolkit().sync();
    }
}
  

Редактировать

Я понял это:

 Graphics g = bufferStrategy.getDrawGraphics();
super.paint(g);
  

Ответ №1:

Вам нужно обновлять каждый раз, когда колесо перемещается, и перекрашивать холст в черный цвет, прежде чем снова рисовать положение колеса.