javafx-test1/src/sample/StreetsPane.java
2020-10-23 03:01:50 +03:00

66 lines
2.0 KiB
Java

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; }
}