Преместването на обект с клавиши оставя следа

В моята 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(...)? Ако е така, извиквате ли метода на супер?   -  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(...)? Как получавате своя графичен обект? Къде ви е 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