繁体   English   中英

如何使用swing和clojure做动画?

[英]How to do animation using swing and clojure?

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

问题是动画没有出现。 这件作品只是跳到命运,没有两者之间的运动。 动画方案有一些问题,你有更好的方法吗?

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

你应该做的就是设置棋子的位置,它将自动重绘自己。

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

Swing不会自动执行动画,如果你有一个计时器也没关系。 如果你想要为动画制作动画,你需要一次移动一段距离并用每一个动作重新绘制画布,这样就可以说出运动的错觉。

你可以使用Trident库: 这里

JDK中有一个Animator演示。 它使用awt但它应该给你一些想法。

jdk1.6.0_20 \\演示\\小程序\\动画

另一个想法可能是从processing.org查看Processing可视化框架。 它是一种简单但功能强大且文档齐全的动画和可视化编程语言。 API非常简单,并且具有一个名为Rosado的非常透明的Clojure包装器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM