我正在学习javafx.animation。我创建了一个椭圆和一个矩形,并沿着椭圆的边界进行矩形移动。我让这个动画无限重复。问题是动画圈之间的过渡并不顺畅。这意味着在第一轮动画结束后,下一轮动画开始需要相当长的时间。这看起来很难看。反正有没有让它更顺利?
提前谢谢。
import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.scene.input.MouseEvent;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.shape.Ellipse;
import javafx.scene.shape.Rectangle;
import javafx.animation.PathTransition;
import javafx.util.Duration;
import javafx.scene.paint.Color;
import javafx.animation.Timeline;
public class TestAnimation extends Application {
@Override
public void start(Stage stage){
//create pane and nodes
Pane pane = new Pane();
Ellipse ellipse = new Ellipse(300, 300, 100, 200);
ellipse.setFill(Color.BLACK);
Rectangle rect = new Rectangle(50, 80);
rect.setFill(Color.CRIMSON);
pane.getChildren().addAll(ellipse, rect);
//create animation
PathTransition path = new PathTransition(Duration.millis(2400), ellipse, rect);
path.setCycleCount(Timeline.INDEFINITE);
//path.setAutoReverse(true);
path.play();
//define mouse event
ellipse.setOnMousePressed(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
path.pause();
}
});
ellipse.setOnMouseReleased(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
path.play();
}
});
//set up stage
Scene scene = new Scene(pane, 600, 600);
stage.setScene(scene);
stage.show();
}
}