SvevendeBallong.java [Last ned]

/* 
 * Programmet tegner en ballong som svever fram
 * og tilbake i et grafisk vindu.
 *
 */
 
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.stage.Stage;
 
 
public class SvevendeBallong 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, 400);
    stage.setScene(scene);
    stage.setTitle("SvevendeBallong");
 
    // Lager selve ballongen med tråd
    int x = 100;
    int y = 200;
    int radius = 50;
    Group ballongMedTraad = new Group();
    Circle ballong = new Circle(x, y, radius);
    ballong.setStroke(Color.BLACK);
    ballong.setFill(Color.RED);
    root.getChildren().add(ballong);
    Line traad = new Line(x, y+radius, x, y+radius*3);
    traad.setStroke(Color.BLACK);
    traad.setFill(Color.BLACK);
    ballongMedTraad.getChildren().add(ballong);
    ballongMedTraad.getChildren().add(traad);
    root.getChildren().add(ballongMedTraad);
 
    // Forflytning fra venstre mot høyre
    int lengde = 600;    // antall piksler til høyre
    int varighet = 2000; // 2 sekunder
    Path høyreSti = new Path();
    høyreSti.getElements().add(new MoveTo(x, y));
    høyreSti.getElements().add(new LineTo(x+lengde, y));
    PathTransition høyreFlytt = new PathTransition();
    høyreFlytt.setDuration(Duration.millis(varighet));
    høyreFlytt.setPath(høyreSti);
    høyreFlytt.setNode(ballongMedTraad);
 
    // Forflytning fra høyre mot venstre
    Path venstreSti = new Path();
    venstreSti.getElements().add(new MoveTo(x+lengde, y));
    venstreSti.getElements().add(new LineTo(x, y));
    PathTransition venstreFlytt = new PathTransition();
    venstreFlytt.setPath(venstreSti);
    venstreFlytt.setNode(ballongMedTraad);
    venstreFlytt.setDuration(Duration.millis(varighet));
 
    // Sekvensiell utførelse av forflytning mot venstre og høyre
    SequentialTransition animasjon = new SequentialTransition();
    animasjon.getChildren().addAll(høyreFlytt, venstreFlytt);
    animasjon.setCycleCount(Timeline.INDEFINITE);
 
    stage.show();
    animasjon.play();   // Spill av!
  }
}
 
Kildekode blir vist ved hjelp av GeSHi.