Движущийся объект с ключами оставляет след

В моей Java-игре у меня есть класс игрока, которому назначено 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();

}

person sparklyllama    schedule 02.06.2013    source источник
comment
Я собирался сделать его изображение, но мне нужно больше репутации. :( Извините ребята.   -  person sparklyllama    schedule 02.06.2013
comment
Разместите ссылку, и кто-то сделает это изображение.   -  person Maroun    schedule 02.06.2013
comment
Думаете, сложно понять, что происходит без кода? По моему опыту здесь, мы ужасно читаем мысли или угадываем код, который не показан, и это должно быть довольно очевидно. Вы переопределяете paintComponent(...)? Если да, то вы вызываете метод super?   -  person Hovercraft Full Of Eels    schedule 02.06.2013
comment
Нам все еще нужно посмотреть, где вы рисуете на самом деле. Ваша проблема ничего не связана с KeyListener, а связана исключительно с вашим рисунком.   -  person Hovercraft Full Of Eels    schedule 02.06.2013
comment
Посмотрите на метод рендеринга в классе плеера.   -  person sparklyllama    schedule 02.06.2013
comment
@sparklyllama: метод рендеринга не показывает, как вы рисуете. Опять же, если вам нужна помощь, покажите свой код рисования. Не уверен, как убедить вас сделать это. Пожалуйста, помогите мне здесь. Куда вы звоните render(...)? Как вы получаете свой объект Graphics? Где твой paintComponent(...) переопределение?   -  person Hovercraft Full Of Eels    schedule 02.06.2013
comment
Чтобы быстрее получить помощь, опубликуйте SSCCE.   -  person Andrew Thompson    schedule 02.06.2013


Ответы (1)


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

Вот я и думаю, что нужно перекрашивать фон при перемещении изображения..

Вот справочник по основам графики в Java с простыми примерами.

Надеюсь это поможет

person Khaled.K    schedule 02.06.2013
comment
Вот оно. Большое спасибо! - person sparklyllama; 02.06.2013
comment
@sparklyllama Отметьте это как ответ, чтобы другие могли увидеть решение - person Khaled.K; 02.06.2013