2013-06-02 51 views
1

在我的Java游戏中,我有一个玩家类,它有一个从Sprite表分配给它的BufferedImage。我刚刚添加了KeyAdapters和KeyListeners,它们只是在屏幕上移动播放器。但是,当我这样做时,它留下了一个形象的痕迹。带钥匙的移动物体留下了痕迹

private void render() { 
    BufferStrategy bs = this.getBufferStrategy(); 
    if(bs == null) { 
     createBufferStrategy(3); 
     return; 
    } 
    Graphics g = bs.getDrawGraphics(); 

    p.render(g); //p is the player object 

    g.dispose(); 
    bs.show(); 
} 

public static void main(String[] args) { 
    Game game = new Game(); 
    game.setPreferredSize(new Dimension(WIDTH * SCALE, HEIGHT * SCALE)); 
    game.setMinimumSize(new Dimension(WIDTH * SCALE, HEIGHT * SCALE)); 
    game.setMaximumSize(new Dimension(WIDTH * SCALE, HEIGHT * SCALE)); 

    JFrame frame = new JFrame(game.TITLE); 

    frame.add(game); 

    frame.pack(); 
    frame.setLocationRelativeTo(null); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setResizable(false); 
    frame.setVisible(true); 

    game.start(); 

} 
+0

我将有一个形象,但我需要更多的声誉。 :(对不起, – sparklyllama

+0

发布一个链接,有人会让它成为一个图像 – Maroun

+0

有点难以理解,没有代码就是怎么回事,你觉得呢?根据我的经验,在阅读头脑或猜测代码时没有显示,这应该是非常明显的,你是否重写'paintComponent(...)'?如果是,你是否调用super的方法? –

回答

0

如果我理解正确的话,您的问题可能是你有喜欢它似乎保持最后得出的东西在它的背景。

所以我认为你需要重新绘制背景,当你移动图像..

这里是一个reference为图形基础在Java中使用简单exampels

希望这有助于

+0

就是这样。非常感谢! – sparklyllama

+0

@sparklyllama将其作为答案进行检查,以便其他人可以看到解决方案 –