Search code examples
javafx-2timelinestage

shaking Stage in javaFX


is it possible to shake primary stage with Timeline and so Use XTimeline and YTimeLine?

    final Timeline Xtimeline = new Timeline();//for Animate On X'-Stage
    Xtimeline.setCycleCount(Timeline.INDEFINITE);
    Xtimeline.setAutoReverse(true);
    final Timeline Ytimeline = new Timeline();//for Animate On Y'-Stage
    Ytimeline.setCycleCount(Timeline.INDEFINITE);
    Ytimeline.setAutoReverse(true);

Solution

  • Try This..

    int x = 0;
    int y = 0;
    
    public void shakeStage() {
            Timeline timelineX = new Timeline(new KeyFrame(Duration.seconds(0.1), new EventHandler<ActionEvent>() {
                @Override
                public void handle(ActionEvent t) {
                    if (x == 0) {
                        primaryStage.setX(primaryStage.getX() + 10);
                        x = 1;
                    } else {
                        primaryStage.setX(primaryStage.getX() - 10);
                        x = 0;
                    }
                }
            }));
    
            timelineX.setCycleCount(Timeline.INDEFINITE);
            timelineX.setAutoReverse(false);
            timelineX.play();
    
    
            Timeline timelineY = new Timeline(new KeyFrame(Duration.seconds(0.1), new EventHandler<ActionEvent>() {
                @Override
                public void handle(ActionEvent t) {
                    if (y == 0) {
                        primaryStage.setY(primaryStage.getY() + 10);
                        y = 1;
                    } else {
                        primaryStage.setY(primaryStage.getY() - 10);
                        y = 0;
                    }
                }
            }));
    
            timelineY.setCycleCount(Timeline.INDEFINITE);
            timelineY.setAutoReverse(false);
            timelineY.play();
        }