【问题标题】:Javafx Shortening a line on 1 sideJavafx在一侧缩短一行
【发布时间】:2018-10-11 01:23:01
【问题描述】:

我试图在 javafx 上动画缩短一条线。我希望起点保持在原地,终点更接近起点。我找不到合适的过渡。所以我使用了这段代码:

        PathTransition pt = new PathTransition(Duration.millis(1000), new Line(x1*3/4, y, x1, y), line);
        pt.play();
        ScaleTransition stBig = new ScaleTransition();
        stBig.setNode(line);
        stBig.setFromX(2);
        stBig.setToX(0.25);
        stBig.setDuration(new Duration(1000));
        stBig.play();

但它没有用。我可以在一种类型的过渡中做到这一点还是有什么出路?

【问题讨论】:

    标签: animation javafx javafx-8 line


    【解决方案1】:

    由于线是水平的,你只需要改变endX属性,你可以用一个简单的Timeline来做:

    import javafx.animation.Animation;
    import javafx.animation.KeyFrame;
    import javafx.animation.KeyValue;
    import javafx.animation.Timeline;
    import javafx.application.Application;
    import javafx.scene.Scene;
    import javafx.scene.layout.Pane;
    import javafx.scene.shape.Line;
    import javafx.stage.Stage;
    import javafx.util.Duration;
    
    public class LineAnimation extends Application {
    
        @Override
        public void start(Stage primaryStage) {
            Line line = new Line(100, 200, 300, 200);
    
            Timeline animation = new Timeline(
                new KeyFrame(Duration.seconds(1), new KeyValue(line.endXProperty(), 100))    
            );
            animation.setCycleCount(Animation.INDEFINITE);
            animation.play();
    
            Pane root = new Pane(line);
            Scene scene = new Scene(root, 400, 400);
            primaryStage.setScene(scene);
            primaryStage.show();
        }
    
        public static void main(String[] args) {
            launch(args);
        }
    }
    

    即使您需要为endXendY 属性设置动画,也不会复杂很多:

        Line line = new Line(100, 100, 300, 300);
    
        Timeline animation = new Timeline(
            new KeyFrame(Duration.seconds(1), 
                    new KeyValue(line.endXProperty(), 100),
                    new KeyValue(line.endYProperty(), 100))    
        );
    

    【讨论】:

    • 它作为动画效果确实很好,但是否可以检测到与它的碰撞?我环顾四周,但找不到方法,我自己的尝试也没有奏效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-03
    • 1970-01-01
    • 2014-08-05
    • 1970-01-01
    • 2014-02-20
    • 2011-11-15
    • 2018-01-24
    相关资源
    最近更新 更多