如何在Java中对动画进行排序?

时间:2018-05-17 22:40:17

标签: java

如何阻止动画在彼此之上播放?

我有一个小机器人,我想绕着网格移动。我正在使用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 为假。

机器人确实需要能够运行无限序列,因此简单地排队或链接一行中的翻译将不起作用。

0 个答案:

没有答案