跳跃动画为什么不显示?

时间:2017-06-03 18:59:17

标签: java swing animation game-physics

我是初学程序员,最近我开始尝试用Java制作游戏。

这是非常基本的,不包括任何类(虽然它应该)但是无论如何我试图使用var ecode = document.getElementById("postcode"); ecode.oninput = function() { var format = ecode.value.split(" ").join(""); if (format.length > 0) { format = format.match(new RegExp('.{1,3}','g')).join(" "); } this.value = format; }; 作为我的精灵在JPanel上制作跳跃动画,但每当我尝试时间时使用JLabel Java标签的每次移动之间的空格似乎跳过它并将标签移动到最后位置。

Thread.sleep(millis)

1 个答案:

答案 0 :(得分:2)

您无法使用Thread.sleep()。

所有侦听器代码都在事件调度线程(EDT)上执行,该线程负责处理事件和绘制GUI。因此,当您告诉线程休眠时,GUI不能重新绘制自己,直到循环中的所有代码都已完成执行,因此您只能在最后位置看到该组件。

相反,您需要使用Swing Timer来安排动画。阅读Swing Tutorial。有以下部分:

  1. Concurrency in Swing - 了解有关EDT的更多信息
  2. How to Use Swing Timers - 有关使用计时器的示例
  3. 了解更多信息。

    另外,请勿使用KeyListener。相反,最好使用Key Bindings。本教程还有一个关于How to Use Key Bindings的部分。

    编辑:

    请参阅:Motion Using the Keyboard中的KeyboardAnimation示例,其中有一个显示两者的工作示例:

    1. 如何使用键绑定
    2. 如何做动画。