Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ";爪哇语;做动画的方法_Java_Swing_Animation - Fatal编程技术网

Java ";爪哇语;做动画的方法

Java ";爪哇语;做动画的方法,java,swing,animation,Java,Swing,Animation,我想用Java做动画。我看过: 令我惊讶的是,在计时器操作处理程序中: 我们实际上并不绘制函数调用;我们只是更新状态——因此计时器动作似乎用于“模拟” 我们请求重新喷漆 Swing在方便时重新绘制其请求 我觉得这有点奇怪,因为: Swing可以将多个重绘请求整理为一个请求 如果我在计时器中计算fps,我可能会计数过多(因为多个重绘变成一个) 问:我是否误读了示例代码,或者这是用Java制作动画的“正确”方法 谢谢 单独进行状态更新和渲染是很正常的 Java/Swing在这方面非常正常 原

我想用Java做动画。我看过:

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

  • 我们实际上并不绘制函数调用;我们只是更新状态——因此计时器动作似乎用于“模拟”
  • 我们请求重新喷漆
  • Swing在方便时重新绘制其请求
我觉得这有点奇怪,因为:

  • Swing可以将多个重绘请求整理为一个请求
  • 如果我在计时器中计算fps,我可能会计数过多(因为多个重绘变成一个)
问:我是否误读了示例代码,或者这是用Java制作动画的“正确”方法


谢谢

单独进行状态更新和渲染是很正常的

Java/Swing在这方面非常正常

原因:

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

对于“动画”,JavaFX要比Java好得多,因为它主要是为了这个目的而构建的

您可能想尝试一下。它是一个干净、简单的动画库,没有太多的杂音,如果你想在Swing中制作动画,它会让你的生活变得更加轻松。

取决于你想做什么-JavaFX 2.0当然不错,但Swing对于简单动画来说仍然很好。而且它的优点是没有额外的依赖性……你的答案更有用。很遗憾,我只能投赞成票(而不是接受),因为另一个从技术上来说更好地回答了原来的问题。