0

我有以下类(片段),在我的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);
4

1 回答 1

1

您需要在每次轮子移动时刷新并将 Canvas 重新绘制为黑色,然后再次绘制轮子的位置。

于 2014-06-16T06:09:06.927 回答