javafx利用时间轴动画,编程实现一段文本在屏幕上左右来回滚动
时间: 2023-11-30 21:03:14 浏览: 83
下面是一个 JavaFX 利用时间轴动画实现文本左右滚动的示例代码:
```java
import javafx.animation.Animation;
import javafx.animation.KeyFrame;
import javafx.animation.Timeline;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.text.Text;
import javafx.stage.Stage;
import javafx.util.Duration;
public class TextScrolling extends Application {
@Override
public void start(Stage primaryStage) {
// 创建一个文本对象
String textString = "这是一段文本,将会左右滚动。";
Text text = new Text(textString);
text.setX(0);
text.setY(50);
// 创建一个时间轴动画
Timeline timeline = new Timeline();
timeline.setCycleCount(Animation.INDEFINITE);
timeline.setAutoReverse(true);
KeyFrame keyFrame = new KeyFrame(Duration.seconds(2), event -> {
double x = text.getX();
double y = text.getY();
double textWidth = text.getLayoutBounds().getWidth();
if (x < 0 || x > (500 - textWidth)) {
timeline.setRate(timeline.getCurrentRate() * -1);
}
text.setX(x + 5 * timeline.getCurrentRate());
});
timeline.getKeyFrames().add(keyFrame);
timeline.play();
// 创建场景,并将文本对象添加到 Pane 容器中
Pane root = new Pane();
root.getChildren().add(text);
Scene scene = new Scene(root, 500, 100);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
```
该程序中,我们创建了一个 `Text` 对象,并将其添加到 `Pane` 容器中。然后,我们创建了一个时间轴动画 `Timeline`,并在其中添加了一个 `KeyFrame`。该 `KeyFrame` 中的代码用于更新文本对象的 `x` 坐标,从而实现文本左右滚动的效果。
在时间轴动画中,我们使用了 `setRate()` 方法来控制动画的方向(正向或反向),以及 `getCurrentRate()` 方法来获取当前动画的方向。当文本对象的 `x` 坐标超出了窗口的左侧或右侧边界时,我们使用 `setRate()` 方法将动画的方向反转。
最后,我们将 `Pane` 容器添加到场景中,并将场景设置为主舞台的场景。当程序运行时,我们就可以看到文本对象在窗口中左右滚动的效果。
阅读全文