java - 如何在 Java 中对动画进行排序?
问题描述
如何防止动画相互叠加播放?
我有一个小机器人,我想在网格周围移动。我正在使用 RotateTransition 和 TranslateTransition 这样做。我有turnLeft、turnRight和moveForward的方法。问题是,当我运行turnLeft然后moveForward时,两个动画一起播放(翻译时旋转)。或者,如果我运行turnLeft两次,它们会堆叠以便它只转一次。
我想要的是在下一个动作开始之前完成一个动作(旋转/平移)
Thread.sleep(x) 有效,但它在视觉上跳过了动画,我读过它不是一个好的解决方案。
这是我能想到的最接近的解决方案:
public void turnLeft() {
robotActive = true;
RotateTransition turnLeft = new RotateTransition(Duration.millis(ANIMATION_TIME), robotPoly);
turnLeft.setByAngle(-90);
turnLeft.setOnFinished(e -> robotActivityFinished());
turnLeft.play();
direction = (direction + 3) % 4;
}
在这里使用setOnFinished非常有效。问题是我需要拥有它,以便每个方法都等到robotsActive为假。
机器人确实需要能够运行无限序列,因此简单地将翻译排队或链接成一排是行不通的。
解决方案
推荐阅读
- python - 在 Tkinter GUI 类中调用 Ptoaster 函数
- python - 如何定义 tesseract_cmd 以在 AWS Lambda 函数中使用 Tesseract-OCR
- flutter - 单击时包裹在 Transform.translate 中的 TextField 不聚焦
- python - 以相反的顺序打印列表
- asp.net-core - IIS 上的 ASP.NET Core grpc-Web 返回 404
- android - 数据更改时如何为 RecyclerView 的每个项目的背景颜色设置动画?
- python - bs4不上课?
- arcgis - 在 ArcGIS 或 QGIS 中,是否可以从包含时间戳的 CSV 文件中向 geotiff 添加时间戳?
- java - 为 Java.Util.Scanner 格式化正则表达式
- java - Java Singleton Class中的SonarQube漏洞--必须避免静态对象,移动到本地成员以避免全局状态