Форму против jpanel по


Я делаю gameengine, включая физический и графический движок. Сейчас мой графический движок настроен на 60 кадров в секунду, и иногда я замечаю медленные обновления на экране. У меня есть JFrame, к которому я добавляю JPanel, который перемещается, то есть графический движок делает фрейм.перекрасить() каждый цикл. Я начинаю верить, что эта перерисовка на рамке делает небольшую задержку на экране.

Задержка такова, что JPanel движется по прямой, и вдруг он может прыгнуть немного дальше, чем обычный.

Не лучше ли поместить JPanel " gameField "на JFrame, а затем добавить JPanel" player " в игровое поле и перерисовать игровое поле? Или это в основном то же самое, что и перекраска JFrame? Я только что слышал, что JFrame должен быть тяжелым компонентом.

Я пытался установить более высокий fps, что ничего не меняет.

1 3

1 ответ:

Взгляните на эту страницу здесь , это много чтения, но должно содержать большую часть того, что вам нужно.

Правка: эта страница здесь немного более сжата

Этот пост переполнения стека здесь имеет дело с двойной буферизацией.

Лучший совет, который я могу дать вам, это найти копию "Killer game programming in Java". Вы можете получить старые версии электронных книг бесплатно из сети легко. Многие вещи немного устарели, но первые несколько глав, которые касаются с созданием игрового цикла и записи в буфер по-прежнему очень актуальны и помогут вам очень много в долгосрочной перспективе!