У меня очень прямой вопрос о классах Thread и Timer в Java как о способе создания игровой анимации. Что лучше из двух? Каковы на самом деле различия между ними и что является наиболее предпочтительным с точки зрения анимации в Java? Я надеюсь, что мой вопрос возник, так как это каким-то образом связано с ответами, которые я получил от одного из моих вопросов здесь... вопрос
Thread Vs javax.swing.Timer, управляющий игровой анимацией в Java?
Ответы (1)
Графический интерфейс должен обновить EDT, чтобы убедиться, что рисование выполняется правильно. Прочтите раздел руководства Swing по Параллелизм для получения полного объяснения. этой концепции.
Когда вы используете Swing Timer, событие выполняется в EDT, поэтому вы можете просто указать компоненту перерисовать себя в новом месте.
Когда вы используете поток, цикл выполняется вне EDT, и вам нужно использовать SwingUtilities.invokeLater(...), чтобы поместить код рисования обратно в EDT.
В общем, если ваш код просто перемещает компонент из одного места в другое, вероятно, проще всего использовать таймер. Однако, если ваша игра включает в себя много сложной логики, вы не хотите, чтобы эта логика выполнялась в EDT, поскольку она не позволит графическому интерфейсу реагировать на события и перерисовывать себя. В этом случае вы можете использовать Thread.