LastebilApp.java [Last ned]

/*
 * Programmet viser to lastebiler som kjører etter hverandre
 * fra venstre mot høyre over skjermen.
 */
 
import javafx.animation.KeyFrame;
import javafx.animation.KeyValue;
import javafx.animation.PathTransition;
import javafx.animation.RotateTransition;
import javafx.animation.SequentialTransition;
import javafx.animation.Timeline;
import javafx.scene.shape.LineTo;
import javafx.scene.shape.MoveTo;
import javafx.scene.shape.Path;
import javafx.util.Duration;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.Group;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Line;
import javafx.scene.shape.Rectangle;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.stage.Stage;
import javafx.application.*;
import javafx.stage.*;
import javafx.scene.*;
 
public class LastebilApp extends Application {
 
public static void main(String[] args) {
    launch(args);
  }
 
  public void start(Stage stage) {
    // Definerer vinduet og initierer scenegrafen
    Group root = new Group();
    Scene scene = new Scene(root, 800, 200);
    stage.setScene(scene);
    stage.setTitle("LastebilApp");
 
    // Setter posisjon og størrelse
    int x = 100;
    int y = 80;
    int lengde = 50;
 
    // Lager de to lastebilene
    Group bil1 = lagLastebil(x, y, lengde);
    x += lengde*2;
    Group bil2 = lagLastebil(x, y, lengde);
 
    // Lager et sammensatt objekt kø av de to bilene
    Group kø = new Group();
    kø.getChildren().add(bil1);
    kø.getChildren().add(bil2);
    root.getChildren().add();
 
    // Flytter hele køen fra venstre mot høyre
    int kjørelengde = 500;
    int varighet = 4000;
    Path høyreSti = new Path();
    høyreSti.getElements().add(new MoveTo(x-lengde, y));
    høyreSti.getElements().add(new LineTo(x+kjørelengde, y));
    PathTransition animasjon = new PathTransition();
    animasjon.setDuration(Duration.millis(varighet));
    animasjon.setPath(høyreSti);
    animasjon.setNode();
 
    // Viser scenegrafen og spiller av animasjonen
    stage.show();
    animasjon.play();  
  }
 
  public Group lagLastebil(int x, int y, int lengde) {
    // Først lages underdelen
    int yUnder =  y-lengde/3-lengde/5;
    Rectangle under = new Rectangle(x, yUnder, lengde, lengde/3);
    under.setStroke(Color.BLACK);
    under.setFill(Color.WHITE);
 
    // Så lasteplanet
    int yLast = y-2*lengde/3-lengde/5;
    Rectangle last = new Rectangle(x, yLast, 3*lengde/4, lengde/3);
    last.setStroke(Color.BLACK);
    last.setFill(Color.WHITE);
 
    // Så førerhuset
    int yHus = y-lengde/5-lengde/3-lengde/5;
    Rectangle hus = new Rectangle(x+3*lengde/4, yHus, lengde/6, lengde/5);
    hus.setStroke(Color.BLACK);
    hus.setFill(Color.WHITE);
 
    // Tre like store hjul, forskjøvet i x-retningen
    int r = lengde/8;
    Circle hjul1 = new Circle(x+r, y-r/2, r);
    hjul1.setStroke(Color.BLACK);
    hjul1.setFill(Color.WHITE);
    Circle hjul2 = new Circle(x+3*r, y-r/2, r);
    hjul2.setStroke(Color.BLACK);
    hjul2.setFill(Color.WHITE);
    Circle hjul3 = new Circle(x+7*r, y-r/2, r);
    hjul3.setStroke(Color.BLACK);
    hjul3.setFill(Color.WHITE);
 
    // Lastebilen settes sammen
    Group lastebil = new Group();
    lastebil.getChildren().add(under);
    lastebil.getChildren().add(last);
    lastebil.getChildren().add(hus);
    lastebil.getChildren().add(hjul1);
    lastebil.getChildren().add(hjul2);
    lastebil.getChildren().add(hjul3);
 
    return lastebil;
  }
 
}
Kildekode blir vist ved hjelp av GeSHi.