Java - Paint, JFrame и фоны - PullRequest
       56

Java - Paint, JFrame и фоны

2 голосов
/ 24 сентября 2010

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

Итак, я сделал это (где isStart создается как true):

public myClass(String name){
    setSize(800, 800);
    setVisible(true);
    setResizable(false);
    runGame()
}

public void paint(Graphics g) {
    if(nowStarting)
        g.drawImage(WelcomeGameScreen, 0, 0, null);
    isStart = false;
}

Проблема в том, что изображение всплыветна секунду, а потом исчезнет?Как ни странно, это работает, когда я опускаю условие if Statement / isStart.Что с этим не так?

Ответы [ 3 ]

1 голос
/ 24 сентября 2010

Я предполагаю, что вы не скопировали код дословно, и в вашем коде есть ошибка.Если ваш код - это то, что я думаю ...

public void paint(Graphics g) {
    if(isStart)
        g.drawImage(WelcomeGameScreen, 0, 0, null);
    isStart = false;
}

Тогда при запуске он отобразит ваш экран-заставку.Но, поскольку вы устанавливаете isStart в значение false, при следующем вызове paint изображение больше не будет рисоваться.Метод рисования вызывается всякий раз, когда ОС сообщает экрану о необходимости его обновления (и когда вы заставляете его перерисовывать).

Способ, которым вы можете обойти это, состоит в том, чтобы установить isStart в false в вашем приложениикогда игра закончит загрузку, а затем вызовите repaint.

0 голосов
/ 24 сентября 2010

Причина, по которой он немедленно исчезает, заключается в перерисовках, которые запускаются платформой Swing.Кроме того, вы написали код для экрана приветствия внутри переопределенного метода paint ().

См. эту ссылку для подробного объяснения того, как вызвать всплывающее окно.У вас также есть класс SplashScreen в Java 1.6

0 голосов
/ 24 сентября 2010

Я полагаю, ваш newStarting логический изменяется на false, как только панель окрашена.

...