66 lines
2.0 KiB
Java
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; }
|
|
}
|