2013-12-24 2 views
0

У меня есть учебное пособие по игре, за которым я последовал, который рисует String на экране с помощью Graphics2D. Он работает как звезда, но единственная проблема в том, что я не понимаю, почему.Экран сброса Graphics2D?

Я называю рисование (графика) в игровом цикле, и он отлично работает. Я использую int, названный currentChoice, чтобы отслеживать, какая буква должна быть красной, и которая должна быть черной.

Ну, я называю метод Draw в цикле. Я просто не понимаю , как графика очищает предыдущую строку, нарисованную. Я имею в виду, я постоянно вызываю метод, и он продолжает рисовать строку в окне и ее «очистку» других (если вы получаете то, что я говорю).

Основном, я просто не undertstant, как это очистка экрана (Примечание: Я супер новичок в этом роде)

КОД (я называю это в цикле, и он работает):

public void draw(Graphics2D graphics) { 

    bg.draw(graphics); 

    graphics.setColor(titleColor); 
    graphics.setFont(titleFont); 
    graphics.drawString("Peache's Revenge", 50, 70); 

    graphics.setFont(font); 
    for (int i = 0; i < options.length; i++) { 
     if (i == currentChoice) { 
      graphics.setColor(Color.RED); 
     } else { 
      graphics.setColor(Color.BLACK); 
     } 
     graphics.drawString(options[i], 145, 140 + i * 15); 
    } 

} 
+0

Что делает 'bg.draw'? – MadProgrammer

+0

Это рисовать фон, который движется. Мне просто интересно, как это ясно в строке ... но я могу отправить вам класс Backhground. Класс BG: http://pastebin.com/pNWwhPB9 – user3131055

ответ

0

Предполагая, что контекст Graphics не изменяется (т.е. то же самое для каждого вызова), то, если фон не очищен, содержимое будет по-прежнему окрашиваться на него.

От вас комментарии, bg.draw рисует фон, поверх всего, что было ранее нарисовано, что означает, что все, что было ранее окрашено, теперь покрывается фоном, что требует повторного сгенерирования текста.

Смежные вопросы