java - "Java"做动画的方式

标签 java swing animation

我想用 Java 制作动画。我看过:http://docs.oracle.com/javase/tutorial/uiswing/misc/timer.html

令我惊讶的是,在计时器操作处理程序中:

  • 我们并不实际调用绘图函数;我们只是更新状态 - 所以看来计时器操作用于“模拟”
  • 我们提出重画请求
  • Swing 在方便时重新绘制其请求

这对我来说有点奇怪,因为:

  • Swing 可以将多个重绘请求整理为一个
  • 如果我在计时器中计算 fps,我可能会过度计数(因为多次重绘变成一次)

问题:我是否误读了示例代码,或者这是用 Java 制作动画的“正确”方法?

谢谢!

最佳答案

单独进行状态更新和渲染是相当正常的。

Java/Swing 在这方面是很正常的。

原因:

  • 很多事情都可以更新状态(计时器事件、用户输入等),因此使更改变得非常轻量并将它们与屏幕刷新分离非常有用,以便您可以随时执行这些操作
  • 您经常希望屏幕刷新的速度与模型状态更新的速度不同。通常,您需要固定的动画/状态更新间隔,但希望屏幕刷新尽可能快。如果您在动画中进行插值,则尤其如此。
  • 渲染通常需要在特定上下文中进行(在本例中为 Swing UI 线程)。您不一定希望限制状态更改仅发生在这种情况下
  • 将 View (屏幕呈现)与数据模型分开是一种很好的做法。除了良好的概念设计区别之外,这还允许您独立于显示测试数据模型、在没有 GUI 的服务器上运行模型版本等。

关于java - "Java"做动画的方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10546053/

相关文章:

java - 此 Windows 安装程序包有问题

java - 是否可以将值从 Adapter 传递到 Activity?

javascript - 将多个球体放在一个距离相同的动画中

jquery - IE 中缓慢的 jQuery 动画

java - 尝试编译 spring roo 示例 heroku 应用程序时构建失败

java - Lombok如何自定义 boolean 对象字段的getter?

java - 如何使用swing永久存储最近的项目

java - 添加到 JFrame 时 KeyListeners 没有响应

java - 如何构建 Swing 应用程序

javascript - 为什么彩色球越过页面边缘继续下降