gpt4 book ai didi

java - 如何在连续的短时间内做出方 block 移动?

转载 作者:行者123 更新时间:2023-11-30 08:31:27 24 4
gpt4 key购买 nike

我是 javafx(和一般编程)的新手,所以对于任何丑陋之处深表歉意。我想做的是在窗口中移动一个方形,但不是一次移动。我希望它在短时间内连续移动,我得到的看起来像这样:

Rectangle rect = new Rectangle(0, 0, 10, 10);
TranslateTransition tt = new TranslateTransition(new Duration(1000), sq);
tt.setToX(1);
tt.setCycleCount(Timeline.INDEFINITE);
tt.playFromStart();

我的问题是它只是向前移动然后又跳回原来的位置。我很确定我必须在某个地方拥有其中之一

sq.setX(sq.getX() + sq.getTranslateX());
sq.setTranslateX(0);

但我实在想不出把它放在哪里。感谢您的帮助!

最佳答案

有几种不同的方法可以做到这一点,这里有几个:

  1. 使用 SequentialTransition由多个 TranslateTransitions 组成穿插着 PauseTransitions .
  2. 设置 Timeline它通过一系列 KeyValues 来操纵正方形的翻译值.

下面的示例使用了 SequentialTransition 方法:

step1 step2

import javafx.animation.*;
import javafx.application.Application;
import javafx.scene.*;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
import javafx.util.Duration;

public class EyeOfSauron extends Application {
private static final int N_STEPS = 5;
private static final int SQUARE_SIZE = 10;
private static final int STEP = SQUARE_SIZE * 2;

@Override public void start(Stage stage) {
Rectangle rect = new Rectangle(0, 0, SQUARE_SIZE, SQUARE_SIZE);
rect.setFill(Color.DARKRED);

SequentialTransition sequentialTransition = new SequentialTransition();
for (int i = 0; i < N_STEPS; i++) {
PauseTransition pt = new PauseTransition(Duration.millis(250));
TranslateTransition tt = new TranslateTransition(Duration.millis(500), rect);
tt.setByX(STEP);
tt.setInterpolator(Interpolator.LINEAR);

sequentialTransition.getChildren().addAll(
pt, tt
);
}
sequentialTransition.getChildren().add(new PauseTransition(Duration.millis(250)));
sequentialTransition.setAutoReverse(true);
sequentialTransition.setCycleCount(Transition.INDEFINITE);

stage.setScene(
new Scene(
new Group(rect),
N_STEPS * STEP + SQUARE_SIZE,
SQUARE_SIZE,
Color.BISQUE
)
);
stage.show();

sequentialTransition.playFromStart();
}

public static void main(String[] args) { launch(args); }
}

关于java - 如何在连续的短时间内做出方 block 移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40643252/

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