Тема против javax.swing.Timer, управляющая анимацией игры на Java? - PullRequest
4 голосов
/ 03 марта 2010

У меня очень простой вопрос, касающийся классов Thread и Timer в Java как способа создания игровой анимации. Что лучше из двух? Каковы на самом деле различия между ними и что является наиболее предпочтительным с точки зрения анимации в Java? Я надеюсь, что мой вопрос с тех пор, это как-то связано с ответами, которые я получил от одного из моих вопросов здесь ... вопрос

1 Ответ

6 голосов
/ 03 марта 2010

Необходимо обновить графический интерфейс на EDT, чтобы убедиться, что рисование выполнено правильно. Прочитайте раздел из учебника по Swing по Concurrency для полного объяснения этой концепции.

Когда вы используете Swing Timer, событие выполняется в EDT, поэтому вы можете просто указать компоненту перекрасить себя в новом месте.

Когда вы используете Thread, зацикливание завершается вне EDT, и вам нужно использовать SwingUtilities.invokeLater (...), чтобы поместить код рисования обратно в EDT.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...