JavaFX:绘制无限符号并向前移动

标签 java animation javafx shapes infinite

我需要创建一个 JavaFX 应用程序,该应用程序生成无限符号形式的路径,然后创建一个将穿过该路径移动的矩形。 到目前为止,我知道创建一个圆形和正方形,并使用过渡路径来移动该矩形,但是如何创建一个无限形状?我对 JavaFx 非常陌生(也在开发中),所以请不要太苛刻:)

这是我的圆形代码:

 import javafx.animation.PathTransition;
 import javafx.animation.Timeline;
 import javafx.application.Application;
 import javafx.scene.Scene;
 import javafx.scene.layout.Pane;
 import javafx.scene.paint.Color;
 import javafx.scene.shape.Rectangle;
 import javafx.scene.shape.Circle;
 import javafx.stage.Stage;
 import javafx.util.Duration;

 public class PathTransitionDemo extends Application {
 @Override 
 public void start(Stage primaryStage) {

 Pane pane = new Pane();


 Rectangle rectangle = new Rectangle (0, 0, 25, 50);
 rectangle.setFill(Color.ORANGE);

 Circle circle = new Circle(125, 100, 50);
 circle.setFill(Color.WHITE);
 circle.setStroke(Color.BLACK);

 pane.getChildren().add(circle);
 pane.getChildren().add(rectangle);

 PathTransition pt = new PathTransition();
 pt.setDuration(Duration.millis(4000));
 pt.setPath(circle);
 pt.setNode(rectangle);
 pt.setOrientation(
 PathTransition.OrientationType.ORTHOGONAL_TO_TANGENT);
 pt.setCycleCount(Timeline.INDEFINITE);
 pt.setAutoReverse(true);
 pt.play(); 

 circle.setOnMousePressed(e -> pt.pause());
 circle.setOnMouseReleased(e -> pt.play());

 Scene scene = new Scene(pane, 250, 200);
 primaryStage.setTitle("PathTransitionDemo"); // Unos nayiva pozornice e
 primaryStage.setScene(scene); 
 primaryStage.show(); 
 }

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

我到处寻找一些提示,但没有运气:(

最佳答案

我在网上找到了一个可以绘制“无限”形状的 SVG 路径,因此请将您的替换为:

SVGPath svg = new SVGPath();
svg.setFill(Color.TRANSPARENT);
svg.setStrokeWidth(1.0);
svg.setStroke(Color.BLACK);
svg.setContent("M 787.49,150 C 787.49,203.36 755.56,247.27 712.27,269.5 S 622.17,290.34 582.67,279.16 508.78,246.56 480,223.91 424.93,174.93 400,150 348.85,98.79 320,76.09 256.91,32.03 217.33,20.84 130.62,8.48 87.73,30.5 12.51,96.64 12.51,150 44.44,247.27 87.73,269.5 177.83,290.34 217.33,279.16 291.22,246.56 320,223.91 375.07,174.93 400,150 451.15,98.79 480,76.09 543.09,32.03 582.67,20.84 669.38,8.48 712.27,30.5 787.49,96.64 787.49,150 z");

并用它来绘图、转换和事件捕获。 您可能需要根据您的需要进行调整。

如果您正在寻找更好的“无限”形状,请搜索“lemniscate”。

关于JavaFX:绘制无限符号并向前移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45251964/

相关文章:

java - 使用Spring时如何注入(inject)多个JPA EntityManager(持久化单元)

JavaFX CSS 行不会相交

css - 是否有用于 javafx 的可视化 css 编辑器?

python - 使用matplotlib.pyplot制作一维波动方程的动画

html - 如何将 100% 高度设置为动画 div

javascript - jQuery fadeOut 回调永远不会触发

java - 在 JavaFX 8 中重新对齐 AnchorPane 中的组件

java - 如何在java中获取更新的行ID

java - Jersey 响应日志记录过滤器,不包括 GET 的响应主体

java - 是否相应地实现了方法