2010-03-03 3 views
4

J'ai cette question très simple concernant les classes Thread et Timer en Java comme un moyen de créer des animations de jeux. Lequel est le meilleur des deux? Quelles sont vraiment les différences entre les deux et quel est le plus préféré en termes d'animation en Java? J'espère que ma question fait depuis, c'est en quelque sorte lié aux réponses que j'ai eues d'une de mes questions ici ... questionThread Vs javax.swing.Timer, contrôler l'animation du jeu en Java?

Répondre

6

Une interface graphique doit être mise à jour sur l'EDT pour s'assurer que la peinture est faite correctement. Lisez la section du tutoriel Swing sur Concurrency pour une explication complète de ce concept. Lorsque vous utilisez une minuterie d'oscillation, l'événement est exécuté dans l'EDT afin que vous puissiez simplement dire à un composant de se repeindre à un nouvel emplacement. Lorsque vous utilisez un Thread, la boucle est effectuée à partir de l'EDT et vous devez utiliser SwingUtilities.invokeLater (...) pour replacer le code de peinture sur l'EDT.

En général, si vous codez simplement un composant d'un emplacement à un autre, il est probablement plus facile d'utiliser un temporisateur. Cependant, si votre jeu implique beaucoup de logique complexe, vous ne voulez pas que cette logique s'exécute sur l'EDT, car cela empêchera l'interface graphique de répondre aux événements et de se repeindre. Dans ce cas, vous pouvez utiliser un thread.