【发布时间】:2016-05-13 03:46:57
【问题描述】:
我不太确定人们如何在 java 中创建动画,例如在屏幕上平移一个正方形。当我尝试使用 for 循环更改矩形的位置时,一切都会立即执行,最终得到矩形的结束坐标。所以我想知道的是人们如何实现这些平滑的动画超时,如果我想创建我的自定义动画类,无论出于何种原因,我将如何添加延迟以使其显示为动画而不是 java 中的即时位置变化?
【问题讨论】:
-
简而言之:每隔几毫秒运行类似
rectangle.x = (System.currentTimeInMillis() - startTimeInMillis) * 0.5 + 10;的东西。或者只是每隔几毫秒运行一次rectangle.x += 2;。 -
嘿,谢谢。我如何每毫秒执行一次 rectangle.x 而不会导致线程休眠或侵犯其他事件的执行?
-
你需要了解并发。本质上,您有一个在后台运行的线程/计时器,它向观察者发送通知,观察者根据他们的要求更新其状态,然后将其呈现到屏幕上(在一个单独的线程中,通常称为事件调度线程)。您最终实现这一目标的方法将取决于您使用的框架
-
对于example、example、example。动画是一个复杂的例子 (for example),根据我的经验,你最好使用专用库来完成这些任务
-
哇,我想我现在有点明白了。所以为了做一些这样的动画并且仍然听用户,我需要有不同的线程对吗?但是这样不是很方便吗?如果我有多个动画需要运行,但由于动画时间不同,一个线程无法运行所有动画怎么办?这是否意味着我必须为这些多个动画使用更多线程?