javafx利用时间轴动画,编程实现一段文本在屏幕上左右来回滚动。
时间: 2023-12-06 21:45:09 浏览: 137
以下是一个简单的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.Font;
import javafx.scene.text.Text;
import javafx.stage.Stage;
import javafx.util.Duration;
public class TextScrolling extends Application {
private int direction = 1;
private double position = 0;
@Override
public void start(Stage primaryStage) {
// 创建一个文本对象
Text text = new Text("Hello, World!");
text.setFont(new Font(24));
// 创建一个时间轴动画
Timeline timeline = new Timeline(
new KeyFrame(Duration.ZERO, event -> {
// 每一帧移动文本的位置
position += direction * 5;
// 如果文本到达了屏幕边缘,改变方向
if (position <= 0 || position >= primaryStage.getWidth() - text.getLayoutBounds().getWidth()) {
direction *= -1;
}
// 更新文本的位置
text.setLayoutX(position);
}),
new KeyFrame(Duration.millis(16)) // 每秒大约60帧
);
timeline.setCycleCount(Animation.INDEFINITE); // 无限循环
// 创建一个场景并将文本添加到场景中
Pane root = new Pane(text);
Scene scene = new Scene(root, 400, 300);
// 将场景添加到舞台并显示
primaryStage.setScene(scene);
primaryStage.show();
// 播放时间轴动画
timeline.play();
}
public static void main(String[] args) {
launch(args);
}
}
```
在这个程序中,我们创建了一个`Text`对象,设置了字体大小,并将其添加到`Pane`对象中。然后,我们创建了一个`Timeline`对象,定义了每一帧的行为,包括移动文本的位置、改变方向以及更新文本的位置。最后,我们创建了一个场景,并将文本添加到场景中,然后将场景添加到舞台并显示出来。最后,我们播放了时间轴动画,让文本在屏幕上滚动。
阅读全文