如何使用swing和clojure做动画?

我正在试图在棋盘上制作一个棋子。 首先,我创建了一个java.util.Timer对象,它将“scheduleAtFixedRate”作为代理函数实现的TimerTask。 所以我保留了要移动的片段(片段移动记录)的记录以及何时适合(当用户使用鼠标移动片段时),TimerTask代理函数应该测试记录是否为零,移动功能。 根据预先计算的矢量,片段移动功能只是更新片段的x和y坐标。 我在片段移动记录上添加了一个观察,所以当它改变时它应该重新绘制板(画布)。 paint方法测试这个片段移动记录是否不是零。

问题是动画没有出现。 这件作品只是跳到了命运之中,没有之间的移动。 动画方案存在一些问题吗?有更好的方法可以做到吗?


Swing组件的更新应该在Event Dispatch Thread(EDT)上完成。 所以你应该使用Swing Timer,因为当Timer触发时执行的任何代码都将在EDT上执行。

所有你应该做的就是设置棋子的位置,它会自动重画自己。

阅读Swing教程中有关如何使用计时器的部分以获取更多信息。


Swing不会自动执行动画,如果您有计时器或无计时器,则无关紧要。 如果要制作动画,您需要一次移动一段距离,然后用一切方式重新绘制画布,这样就会产生错觉,以便说出动作。


你可以使用Trident库:在这里

链接地址: http://www.djcxy.com/p/46135.html

上一篇: How to do animation using swing and clojure?

下一篇: ~1s latency control app: is this suitable for Java?