如何阻止动画在彼此之上播放?
我有一个小机器人,我想绕着网格移动。我正在使用RotateTransition和TranslateTransition这样做。我有 turnLeft , turnRight 和 moveForward 的方法。问题是当我运行 turnLeft 然后 moveForward 时,2个动画一起播放(在翻译时旋转)。或者,如果我运行 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 可以在这里完美运行。麻烦的是我需要它,以便每个方法等到 robotActive 为假。
机器人确实需要能够运行无限序列,因此简单地排队或链接一行中的翻译将不起作用。