首页 > 解决方案 > 如何在 Java 中对动画进行排序?

问题描述

如何防止动画相互叠加播放?

我有一个小机器人,我想在网格周围移动。我正在使用 RotateTransition 和 TranslateTransition 这样做。我有turnLeftturnRightmoveForward的方法。问题是,当我运行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为假。

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

标签: java

解决方案


推荐阅读