package sample; import javafx.animation.KeyFrame; import javafx.animation.Timeline; import javafx.scene.layout.Pane; import javafx.scene.paint.Color; import javafx.scene.shape.Circle; import javafx.scene.shape.Line; import javafx.util.Duration; public class StreetsPane extends Pane { private Circle dummyBus; private Line dummyStreetLine; private double streetDistance;//not needed private Timeline animation; private boolean moveable = true; public StreetsPane() { super(); dummyBus = new Circle(); dummyBus.setFill(Color.BLUE); dummyBus.setRadius(10); dummyStreetLine = new Line(); dummyStreetLine.setFill(Color.BLACK); getChildren().addAll(dummyStreetLine, dummyBus); animation = new Timeline(new KeyFrame(Duration.millis(100), e -> { if (isMoveable()) moveBus(); else System.out.println("not movable"); })); animation.setCycleCount(-1); animation.play(); } void placeBallOnStreet(){ dummyBus.setCenterX(dummyStreetLine.getStartX()); dummyBus.setCenterY(dummyStreetLine.getStartY()); } void moveBus(){ System.out.println("moving bus"); if (dummyBus.getCenterX() < dummyStreetLine.getEndX()){ double oldX = dummyBus.getCenterX(); double newX = dummyBus.getCenterX() + 1; dummyBus.setCenterX(newX); System.out.printf("Bus moved from %f to %f\n", oldX, newX); } else { moveable = false; animation.stop(); System.out.println("Bus reached Dist"); } } void drawStreet(){ dummyStreetLine.setStartY(this.getHeight()/2); dummyStreetLine.setEndY(this.getHeight()/2); dummyStreetLine.setStartX(this.getWidth()*0.2); dummyStreetLine.setEndX(this.getWidth()*0.8); streetDistance = dummyStreetLine.getEndX() - dummyStreetLine.getStartX(); } public boolean isMoveable() { return moveable; } }