gpt4 book ai didi

animation - 如何更改 JavaFX 中动画计时器的速度?

转载 作者:行者123 更新时间:2023-12-02 22:56:54 25 4
gpt4 key购买 nike

我正在尝试更改 AnimationTimer 的速度,以便代码运行得更慢,这是我到目前为止的代码:

AnimationTimer timer = new AnimationTimer() {

@Override
public void handle(long now) {
if (upOrDown != 1) {
for (int i = 0; i < 4; i++) {
snakePositionDown[i] = snake[i].getX();
snakePositionDownY[i] = snake[i].getY();
}

snake[0].setY(snake[0].getY() + 25);

for (int i = 1; i < 4; i++) {
snake[i].setX(snakePositionDown[i - 1]);
snake[i].setY(snakePositionDownY[i - 1]);
}

leftOrRight = 2;
upOrDown = 0;
}
}

};

timer.start();

如何让 AnimationTimer 运行得更慢?

提前致谢!

最佳答案

您可以使用时间轴来实现此目的。调整 Timeline.rate 属性还允许您更新“速度”:

// update once every second (as long as rate remains 1)
Timeline timeline = new Timeline(new KeyFrame(Duration.seconds(1), event -> {

if (upOrDown != 1) {
for (int i = 0; i < 4; i++) {
snakePositionDown[i] = snake[i].getX();
snakePositionDownY[i] = snake[i].getY();
}
snake[0].setY(snake[0].getY() + 25);
for (int i = 1; i < 4; i++) {
snake[i].setX(snakePositionDown[i - 1]);
snake[i].setY(snakePositionDownY[i - 1]);
}
leftOrRight = 2;
upOrDown = 0;
}

}));
timeline.setCycleCount(Animation.INDEFINITE);
timeline.play();

...

// double speed
timeline.setRate(2);

关于animation - 如何更改 JavaFX 中动画计时器的速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50337303/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com