Circle_Path_Line2
  • PathTransition
    PathTransition pathTransition = new PathTransition();
  • MouseClick:
    root.setOnMouseClicked(me ->
    { }
  • Animation: 4 repetitions:
    Animation.Status status = pathTransition.getStatus()
    pathTransition.setCycleCount((int) 4f);  
  • Line : Path path = new Path();
    path.getElements().add(new LineTo(100.0f, 100.0f));
 
Code :

package javafxtemplate1;
// without a divider
import javafx.animation.Animation;
import javafx.animation.Interpolator;
import javafx.animation.PathTransition.OrientationType;
import javafx.animation.Timeline;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.shape.ArcTo;
import javafx.scene.shape.Circle;
import javafx.scene.shape.ClosePath;
import javafx.scene.shape.MoveTo;
import javafx.scene.shape.Path;
import javafx.stage.Stage;
import javafx.animation.PathTransition;
import javafx.scene.shape.CubicCurveTo;
import javafx.scene.shape.LineTo;
import javafx.scene.shape.PathElement;
import javafx.util.Duration;
/**
*
* @author Manas9
*/
public class JavaFXTemplate1 extends Application {
//
final PathTransition pathTransition = new PathTransition();
@Override

public void start(Stage primaryStage)
{

final Circle circle1 = new Circle();
circle1.setCenterX(10);circle1.setCenterY(10);
circle1.setRadius(10.0f); circle1.setFill(Color.WHITE);
//PathElement[] path = squareOrbit();
Path path = new Path();
path.getElements().add (new MoveTo (0f, 50f));
path.setStroke(Color.WHITE);
path.setStrokeWidth(4);
path.getElements().add(new LineTo(100.0f, 100.0f));

//
pathTransition.setDuration(Duration.millis(10000));
pathTransition.setNode(circle1);
pathTransition.setPath(path);
pathTransition.setOrientation(OrientationType.ORTHOGONAL_TO_TANGENT);
pathTransition.setCycleCount((int) 4f);
// pathTransition.setCycleCount(Timeline.INDEFINITE);
pathTransition.setAutoReverse(true);

//
Group root = new Group();
root.getChildren().addAll(path, circle1);
// root.getChildren().addAll(track, circle1);
root.setTranslateX(50);
root.setTranslateY(50);
// click on
root.setOnMouseClicked(me ->
{
Animation.Status status = pathTransition.getStatus();
if (status == Animation.Status.RUNNING &&
status != Animation.Status.PAUSED)
pathTransition.pause();
else
pathTransition.play();
});

Scene scene = new Scene(root, 500, 500, Color.DARKGRAY);

primaryStage.setTitle("Moveto-Line Anim demo");
primaryStage.setScene(scene);
primaryStage.show();
}

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

}

}
 

Runtime displays:

Click on circle/screen

Back to starting point: